关于补码的浅显理解

对于补码的目前实际规则是什么呢,这里以十进制6和-6对应的4位二进制数0110和1010稍作说明,正数0100的补码就是0100,一般介绍补码是这么得出来的,-6的原码是1110,反码是1001,补码是反码加1,即为1010。个人觉得原码、反码和补码的概念的初衷是为了大家方便记忆计算机是如何以二进制的方式保存负数的。但是会让人云里雾里,难免心里产生困惑,为什么要这样。为了便于理解,我觉得先抛掉这些原码、反码和补码的概念。我们回归数的自然状态。

从数学史可知,人们对于负数也是从不可接受到慢慢地接受和理解的过程,最终负数对于大家来说是很习以为常的。由数的基本性质可知,对每一数a存在着且唯一(与它对称的)数-a,使a+(-a)=0。二进制数也是数,同样有着对称性,即0110+x=0000,x即为二进制表示的-6。现在要引进一个mod(模)的概念,具体mod的概念可问度娘。4位的二进制数的mod应该是10000,注意,现在是5位的二进制数了,因为有溢出,所以10000与0000在4位二进制中的表示是一样的。0110+x=0000可变换成x=0000-0110=10000-0110=(1111+0001)-0110=(1111-0110)+0001=1001+0001=1010。这样可得出-6的4位二进制表示就是1010。这样,大家所熟知的负数二进制表示(原码、反码和补码),这样被推理出来。不难看出,所有的负数的二进制表示最高位都应该是1,且可由正数的取反后再加1而得。我想这个自然性质与现在的计算机二进制负数表示一致,不知是巧合还是当初就是这么推理出来的。如果是这番推理出来的,为何从一般教材中没有演示呢,这时的原码、反码和补码的概念就显得有点多余而且有点误导了。或许还是自己懂的还是太少,请大家指正。

如下,画图理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值