补码的原理

在时钟里,时针的最大刻度是 12,超过这个值(称为模)将重新计时。假设现在要把时针从 4 点钟调到 1 点钟,可以逆时针减 3 小时,也可以顺时针加 9 小时,效果是完全一样的。

在这里插入图片描述
于是在时针系统里存在:4-3 = 4+9,在模为 12 的时针系统里 3 和 9 就是一对补数,利用补数形式可将式子写成:4-3 = 4+(12-3)。

这里的12点也可以称为0点,即高位溢出

因为换句话说如果A加上B等于模或者0,那么B就是A的补数

举个例子:
2的二进制是0000 0010
0的二进制是0000 0000
我们知道二进制加法中,正常情况下2加上任何数都不能等于0,只有一种情况,那就是高位溢出。比如2加上某个数变成了1 0000 0000,这个时候计算机会弃掉高位的1.
这就很简单了,把2按位取反,变成1111 1101,它加上2就是1111 1111(全1),这个时候只需要再加1就能溢出,变成1 0000 0000.
所以将2按位取反再加1为 1111 1110,就是2的补码。

所以计算64-16
-》
64的原码 + 16的补码 
-》
64的原码: 0100 0000
16的原码: 0001 0000 取反 1110 1111 加1 等于 1111 0000
-》 
  0100 0000
  1111 0000
----------------
1 0011 0000
-》
48

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值