Java 位元位移運算子(bit shift operators)範例如下。
Java 位元位移運算子可移動數值的二進位的位置,
向左移動的符號為<<
;
向右移動的符號為>>
。
例如整數8
的二進位為1000
,
則8 << 1
代表二進位向左移動一單位為10000
,整數值為16
;
相反地8 >> 1
代表二進位向右移動一單位為100
,整數值為4
。
int n = 2;
System.out.println(n); // 2
System.out.println(Integer.toBinaryString(n)); // 10
n = n << 1; // 10 => 100
System.out.println(n); // 4
System.out.println(Integer.toBinaryString(n)); // 100
n = n << 2; // 100 => 10000
System.out.println(n); // 16
System.out.println(Integer.toBinaryString(n)); // 10000
n = n >> 1; // 10000 => 1000
System.out.println(n); // 8
System.out.println(Integer.toBinaryString(n)); // 1000
從以上可觀察到對整數來說,向左移動1個位置相當於乘以2
,移動2個位置相當於乘以4
,也就是說位移運算子右側的位移數相當於乘/除以多少2
的次方。
n << k
等同於n * 2k
。
n >> k
等同於n * 2k
。
int n = 11;
System.out.println(n); // 11
System.out.println(Integer.toBinaryString(n)); // 1011
n = n << 2; // 1011 => 101100
System.out.println(n); // 44
System.out.println(Integer.toBinaryString(n)); // 101100
2 則留言:
相反地8 >> 1代表二進位向右移動一單位為100,整數值為8。
這結果因該為4呦
@Blue 謝謝糾錯
張貼留言