java移位操作符详解

左移位操作符 <<

按照操作符右侧指定的位数将操作符左边的操作数向左移动,低位补0

int i = -1;
System.out.println(Integer.toBinaryString(i));
运行结果

为什么转二进制后会是32个1呢?

在java内存中,一个int类型的变量,占用的空间32位,取值范围为 $-2^31$ 至 $2^{31}-1$,在内存中存储的时候,将其转换为补码进行存储,这样做的有点就在于,符号位和数值为可以一起处理,减法可以通过加法实现,简化了计算机的结构设计,提高了运算速度。

  • 将-1向左移动1位
System.out.println(Integer.toBinaryString(i<<1));

右移位操作符 >>和>>>

** 按照操作符右侧指定的位数,将操作符左边的操作数向右移动**

右移位操作符分为有符号无符号

  • >> 为有符号操作符

  • >>> 为无符号操作符

有符号操作符和无符号操作符的区别为
有符号时,符号为正,高位补0;符号为负,高位补1
无符号时,无论符号为正负,高位都补0

移位操作符与等号的组合使用

操作符左边的值会移动由右边的值指定的位数,再将得到的结果赋值给左边的变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容