**移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。**
**逻辑移位**:移出去的位丢弃,空缺位(vacant bit)用 0 填充。
**算术移位**:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。
左移操作符<<
左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。
–例如:将a的二进制数左移2位,右边空出的位补0,左边溢出的位舍弃。若a=15,即00001111(2),左移2位得00111100(2)。
左移1位相当于该数乘以2,左移2位相当于该数乘以2*2=4,15 << 2=60,即乘了4 。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。
右移操作符>>