日期:2014-05-20  浏览次数:20676 次

java 位运算符的问题
int a=3<<2;
结果是:12;为什么?是怎么执行

int a=3>>2;
结果是:0; 为什么?是怎么执行的

------解决方案--------------------
X(B)代表二进制

3 << 2 代表

0000000000000011(B) 向左移两位,得到
0000000000001100(B) = 8 * 1 + 4 * 1 + 2 * 0 + 1 * 0 = 12

同理,15 << 3
15 = 8 + 4 + 2 + 1
0000000000001111(B) 向左移3位,得到
0000000001111000(B) = 64 * 1 + 32 * 1 + 16 * 1 + 8 * 1 + 4 * 1 + 2 * 0 + 1 * 0 = 120

3 >> 2 代表向右移,但最高位(符号位)不动
0000000000000011(B)向右移两位,得到
0000000000000000(B) = 0