Java中Int类型占4个字节,二进制用补码表示:
3的二进制表示: 00000000 00000000 00000000 00000011
-3的二进制表示:11111111 11111111 11111111 11111101
1.左移<<:左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0).
如:
3<<1=00000000 00000000 00000000 00000110=6;
-3<<1=11111111 11111111 11111111 11111010=-6;
2.有符号右移>>:“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用 了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
3>>1=00000000 00000000 00000000 00000001=1;
-3>>1=11111111 11111111 11111111 11111110=-2;
3.无符号右移:
3>>>1=00000000 00000000 00000000 00000001=1;
-3>>>1=01111111 11111111 11111111 11111110=2147483646;