Java的移位运算符

1、左移运算符:<<

丢弃左边指定位数,右边补0。

注意:

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

其它几种整形byte,short移位前会先转换为int类型(32位)再进行移位。

2、右移运算符:>>

丢弃右边指定位数,左边补上符号位

注意:

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

3、无符号右移运算符:>>>

丢弃右边指定位数,左边补上0

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

转自:https://zhuanlan.zhihu.com/p/30108890

posted @ 2019-04-12 10:51  GarrettLu  阅读(564)  评论(0编辑  收藏  举报