为什么换成10进制算对不上,移码

只能通过移码算?为什么我化成10进制算,差距很大,基本对不上,有点不懂,是哪里出了问题?

img

img


x的补码:1111 0100
y的补码:1011 0000
2x的补码(相当于x左移1位):1110 1000
y/2的补码(相当于y右移一位):1101 1000(y是负数,右移后为了保证还是负数,左边补1)
2x+y/2的结果:
  1110 1000
 +1101 1000
 ------------
 11100 0000
 左边溢出一位,所以结果是 1100 0000

你再算算原码10001100,能是-20?不是-12吗?
z=2x+y/10=-64=11000000,没毛病