移位操作

移位操作

左移:<<

       按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

右移:>>

如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位置就填入1(右移n位相当于将这个数除以2的n次方)


移位操作_第1张图片

无符号右移:>>>

       无论最高位是0还是1,左侧被移空的高位都填入0

移位的数学意义:

数字没有溢出的前提下,对于正数和负数,左移n位就相当于乘以2的n次方。

java中在进行移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。

 移位操作_第2张图片

注意:当64<<2的时候,得到的二进制数为:00000000,即为0(十进制)。这是因为64左移2位时,溢出的高位中包含1,所以64<<2的结果不为256。


你可能感兴趣的:(java)