java移位运算符 '<<' , '>>' , '>>>'详解

测试数据:

java移位运算符 '<<' , '>>' , '>>>'详解



1、左移运算符:<<    丢弃左边指定位数,右边补0

java移位运算符 '<<' , '>>' , '>>>'详解


注意:


左移位数大于等于32位操作时,会先求余(%)后再进行左移操作。也就是说左移32位相当于不进行移位操作,左移40位相当于左移8位(40%32=8)。当long类型进行左移操作时,long类型在二进制中的体现是64位的,因此求余操作的基数也变成了64,也就是说左移64位相当于没有移位,左移72位相当于左移8位(72%64=8)


2、右移运算符:>>    丢弃右边指定位数,左边补上符号位。

java移位运算符 '<<' , '>>' , '>>>'详解


注意:


和左移一样,int类型移位大于等于32位时,long类型大于等于64位时,会先做求余处理再位移处理,byte,short移位前会先转换为int类型(32位)再进行移位。


3、无符号右移运算符:>>>    丢弃右边指定位数,左边补上0。


无符号右移运算符>>>和右移运算符>>是一样的,只不过右移时左边是补上符号位,而无符号右移运算符是补上0,也就是说,对于正数移位来说等同于:>>,负数通过此移位运算符能移位成正数。

java移位运算符 '<<' , '>>' , '>>>'详解

上一篇:servlets的表单提交响应


下一篇:枚举优化if-else if -else过程记录