算数移位和逻辑移位

背景知识:计算机中的负数表示方式
-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,算数右移和逻辑右移最高位添加的数字和正负相关。

posted @ 2025-06-20 21:24  日暮_途远  阅读(49)  评论(0)    收藏  举报