Java 位運算基礎
阿新 • • 發佈:2021-10-30
以下數字都使用byte(1位元組,8b)示例
&(與)
&可以給兩位數字進行與運算
例如:3 & 4 = 0
3:0000 0011
4:0000 0100
-------------
0000 0000
也就是說,&運算,會將兩個數的二進位制每一位來進行比較
如果都是1,那麼就是1,否則都是0
|(或)
|和&的原理是相反的
例如:3 | 4 = 7
3:0000 0011
4:0000 0100
-------------
0000 0111
如果二進位制的數都是1或者有一個為1,那麼就是1
否則為0
~(非)
~運算是單獨一個數 例如:~3 0000 0011 ---------- 1111 1100 0變成1,1變成0
^(異或)
例如:3 ^ 4 = 7
3:0000 0011
4:0000 0100
-------------
都是0的話就是0,都是1也是0,0和1是1
位運算 << 和 >>
<<
左位移就是將一個數的二進位制位向左移動n位
例如:3 << 2 = 12
3:0000 0011
將兩個1向左移動兩位,移動的位置並補上0
得到 0000 1100
>>
右位移,就是將一個數的二進位制位向右移動n位
例如:3 >> 2 = 0
3:0000 0011
將1右移動兩位,就小於了最小位,所以補上0就是
0000 0000
求整數N的二進位制第k位是?
有一個數N,想要知道它的二進位制數第k位是多少 可以 公式: N >> k & 1 例如: 25:0001 1001 求第5位是多少,k==4,k從0開始 25 >> 4 & 1 = 1,就是1了