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 謝謝糾錯
張貼留言