JAVA_SE系列:16.位运算符之左移、右移、无符号右移

操作数<<移动位数    例:5<<2 将操作数5左移2位

左移运算符:将操作数的二进制码整体(包括符号位)左移指定位数右边的空位补0。

 

操作数>>移动位数    例:5>>2 将操作数5右移2位

右移运算符:将操作数的二进制码整体(包括符号位)右移指定位数左边空出来的空位用

            原操作数的符号位补空,原操作数是正数补0操作数是负数补1.

 

操作数>>>移动位数   例:5>>>2将操作数5无符号右移2位

无符号右移:将操作数的二进制码整体(包括符号位)右移指定位数左边空出来的空位始

            终都用0补。 

 

运算规则:对于低于int型的操作数(如byte、short、char)总是先自转换成int型后

      再操作移位。

     对于int类型的整数移位a>>b当b>32时,系统会先用b对32求

      余,得到的结果才是移位位数。

     ƒ对于long类型的整数移位a>>b当b>64时,系统会先用b对64求

      余,得到的结果才是移位位数。    

 

 

当进行移位运算时,只要被移位的二进制码没有发生有效位的丢失(对于正数而言是指被移出的位全部是0),则左移n位就相当于给操作数乘以2的n次方,右移n位则就是除以2的n次方。不仅如此,进行移位运算不会改变操作数本身,只是得到了一个新的运算结果,而原来的操作数本身不会改变。 

你可能感兴趣的:(java,位运算,操作)