java移位运算

来源:互联网 发布:怎么做手机淘宝 编辑:程序博客网 时间:2024/06/05 23:39
首先java中整数int都是4个字节即32位(bit),而且第一位都是符号位并且使用补码来表示
所以:
32bit能表示的最大整数是2^31-1

<< 左移运算
a<<b
把a的二进制往左移动b个单位,低位补0
可能正数移动后变成负数

>> 右移运算
a>>b
把a的二进制往右移动b个单位,如果a是正数,则高位空出来的空间用0填充,如果a是负数,则高位空出来的空间用1填充。
所以>>不会改变符号,正数移动后还是正数,负数移动后还是负数。

所以>>也叫有符号右移

>>>才是和<<对应的,不管符号位都填充0