算数移位和逻辑移位
背景知识:计算机中的负数表示方式
-30 用12个bit表示
①将负数的数字部分用正数转换成二进制, 0000 0001 1110
②求转换后的二进制数的反码, 1111 1110 0001
③反码+1得到补码, 1111 1110 0010
算数移位:
①算数右移
1111 1110 0010(-30) >> 1 = 1111 1111 0001(-15)
0000 0001 1110(30) >> 1 = 0000 0000 1111(15)
②算数左移
1111 1110 0010(-30) << 1 = 1111 1100 0100(-60)
0000 0001 1110(30) << 1 = 0000 0011 1100(60)
逻辑移位:
①逻辑右移
1111 1110 0010(-30) >> 1 = 0111 1111 0001(2033)
0000 0001 1110(30) >> 1 = 0000 0000 1111(15)
②逻辑左移
1111 1110 0010(-30) << 1 = 1111 1100 0100(-60)
0000 0001 1110(30) << 1 = 0000 0011 1100(60)
综上所述:
逻辑左移和算数左移一般都是最低位添加0,算数右移和逻辑右移最高位添加的数字和正负相关。

浙公网安备 33010602011771号