移位运算符详解

2019-04-13 12:58发布

以下所说都为有符号数! >>运算符:
  • 将位右移,高位用符号位填充
  • .移位运算符的右操作数要完成模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