逻辑移位
无符号数的移位称为逻辑移位
对于逻辑移位,就是不考虑符号位,移位的结果只是数据所有的位数进行移位
规则:
左移时,高位移丢,低位添0;右移时,低位移丢,高位添0。
算术移位
不改变符号位的移位操作
算术是带有符号的数据,所以我们不能直接移动所有的位数,这可能会使得符号不正确。
算术移位是对有符号数进行的,符号位不变,对数值位进行移动。移位的规则如下:
举个栗子:
正数 0,0110(+6)
左移1位:0,1100
左移2位:0,1000
右移1位:0,0011
右移2位:0,0001
负数 1,0110(-6原码)
左移1位:1,1100
左移2位:1,1000
右移1位:1,0011
右移2位:1,0001
负数 1,1010(-6补码)
左移1位:1,0100
左移2位:1,1000
右移1位:1,1101
右移2位:1,1110
负数 1,1001(-6反码)
左移1位:1,0011
左移2位:1,0111
右移1位:1,1100
右移2位:1,1110
代码实操一下: