1. 程式人生 > 其它 >Java 位運算基礎

Java 位運算基礎

以下數字都使用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了