Java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)

1.左移

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

左移的规则只记住一点:丢弃最高位,0补最低位

2)运算规则

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

当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃;

当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。

当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。

2.带符号右移

右移一位相当于除2,右移n位相当于除以2的n次方。

3.无符号右移

无符号右移规则和右移运算是一样的,只是填充时不管左边的数字是正是负都用0来填充,无符号右移运算只针对负数计算,因为对于正数来说这种运算没有意义;

右移一位相当于除2,右移n位相当于除以2的n次方。

 

ref:https://www.cnblogs.com/blog-cq/p/5793529.html