3条回答 默认 最新
- @矛盾综合体 2019-11-08 20:12关注
首先先简单科普一下,为什么会有补码,因为刚开始计算器是由加法器构成的,但是加法器可以实现加和乘,无法实现减和除,所有引入补码,这一概念
然后来一个一个回答你的疑问。
首先-127的源码是 -111 1111,
这句话暂时看上去没有错,求-127的原码,确实先应该求其绝对值的原码,也就是7个1,但是由于其是符号数,最高位应该为1(正数为0,负数为1,最高位作为符号位)
补齐8位的话就是 -0111 1111
这里开始就理解有点混乱了,补齐应该是1111 1111,计算机内部只有1和0,是没有-这个概念的,所有用最高位的变化来代表符号,这才是真正的原码
然后原码取反,(注意作为符号位是不会变化的),变成反码:1000 0000,然后反码+1变成补码,也就是1000 0001,这就是-127的补码,计算机内部
真正存储的01代码形式。
最后总结一下
负数的补码=原码取反+1(注意符号位不取反)
正数的补码=原码=反码
随便补充一下
8位二进制原码的表示范围:-127~+127
8位二进制反码的表示范围:-127~+127
8位二进制补码的表示范围:-128~+127
至于为什么是这么多,可以顺便找找博客,这方面的博客很多
如有错误或者有什么疑问,欢迎一起讨论本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 5无用 1