C++ 浅析移位运算

按位左移(<<):

  按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零

按位右移(>>):

  按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1

简单举个例子【右移>>】:

int number = 500;

number = number >> 1;

十进制      二进制

(500)10  <===>(1 1 1 1 1 0 1 0 0)2

右移两位:

二进制       十进制

(1 1 1 1 1 0 1)2 <====>(125)10

低位舍弃2位

同理【左移动<<】

十进制      二进制

(500)10  <===>(1 1 1 1 1 0 1 0 0)2

左边移两位:

二进制       十进制

(1 1 1 1 1 0 1 0 0 0 0)2 <====>(2000)10

低位舍弃2位

注意需要考虑溢出的问题。此处不做深究。

原文地址:https://www.cnblogs.com/liuruoqian/p/11631947.html