java学习之旅-5
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习之旅-5相关的知识,希望对你有一定的参考价值。
说了几个简单的位运算符,接下来看看稍微复杂点的另外三个吧:
<<:
将操作数的二进制码整体左移指定位数,左移之后的空使用‘0’来补充。刚接触这个所谓的“移位操作”,不一定能理解二进制码整体移动指定位数是什么意思,所以下面用代码直观地表示一下:
System.out.println(2 << 3);//表示2的二进制码整体左移3位,结果为16。
2的二进制:00000000_00000000_00000000_00000010
移位后的二进制:00000_00000000_00000000_00000010
左移之后,右端缺少3位,使用‘0’来补充空位,结果如下:
16的二进制:00000_00000000_00000000_00000010000
>>:
将操作数的二进制码整体右移指定位数,右移之后的空使用‘符号位’来补充。同样地也以代码来解释:
System.out.println(16 >> 3);//表示16的二进制代码整体右移3位,结果为2。
16的二进制:00000_00000000_00000000_00000010000
移位后的二进制:00000_00000000_00000000_00000010
右移之后,左端缺少3位,使用符号位(正数为‘0’,负数为‘1’)来补充空位,结果如下:
2的二进制:00000000_00000000_00000000_00000010
>>>:
将操作数的二进制码整体右移指定位数,右移之后的空位使用‘0’来补充(注意:没有“<<<”!!!)。这个操作其实和“>>”一样,只是无论操作的数为正或负,均使用‘0’来补充空位。
System.out.println(-16 >>> 3);//表示-16的二进制码整体右移3位,结果为536870910。
-16的二进制:11111111_11111111_11111111_11110000
移位后的二进制:11111111_11111111_11111111_11110
右移三位之后,左端空缺三位,需要用‘0’来补充,结果如下:
536870910的二进制:00011111111_11111111_11111111_11110
以上是关于java学习之旅-5的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?