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