以下所说都为有符号数!
>>运算符:
- 将位右移,高位用符号位填充
- .移位运算符的右操作数要完成模32的运算(除非左操作数是long类型,在这种情况下需要对右操作数模64).
举例:
33>>3 结果为4.
33>>35 结果为4
-33>>3 结果为-5
-33>>35 结果为-5
<<运算法:
- 将位左移,低位补0.(就算是byte类的数左移,也会当做32位的处理)
- 移位运算符的右操作数要完成模32的运算(除非左操作数是long类型,在这种情况下需要对右操作数模64).
- 符号位照样会被左移数占据,所以正数左移可能为负数,负数左移也可能为正数.
举例:
33<<2 结果为132
33<<35 结果为132
33<<26 结果为-2080374784
-33<<2 结果为-132
-33<<35 结果为-132
-33<<26 结果为2080374784
注意:负数一定要换成补码再移位,因为负数在计算机中是以补码存储.
至于为什么会在我的另外一篇博客有介绍 https://blog.csdn.net/qq_36470686/article/details/82907434