保函网

原码反码补码

发布时间:2025-11-27 | 来源:互联网转载和整理

说到二进制补码,大家都知道:有符号数的负数的补码是其正数的反码+1,例如10001111的补码是反码01110000加1=01110001,很多书都这么说,可是为什么这样计算的结果就是它的补码?为什么要用补码?很多书要么不解释,要么就是说:这是因为在计算机内补码计算最快。(其实是补码计算指令的CPU设计更容易实现)最初我看的书,《大学计算机基础教程》(我非计算机专业),这破书说不清,道不明,给与我非常严重负面的影响,以至于我在以后的计算机学习过程中,程序设计中遇到大大小小不少麻烦和迷茫。

在某些计算机组成原理书上提到:其实补码的计算原理,是用一个模来减去无符号的正数部分。譬如时钟12点之后是13点,但是时钟上没有13点怎么办?就用13减去12=1点。这个模是12.可惜这个比喻并不是很好。

请看一个字节长的无符号数的表示范围:0~255,有符号数的表示范围:-128~127,注意,这个表示范围的写法极有可能影响我们的思维,从而导致错误。我们应该这样来写:0~127~-128~-1,这才是较好的写法。为什么?因为这个写法的数的顺序与0~255一一对应。

由上我们了解,其实补码不过是用128~255这段范围的数来表示~128~-1这段范围的负数。那么我们就可以凭自己,而不是看教材,就可以推测出计算补码的公式,就是:256-欲求的负数的绝对值=此负数的补码。

没错就是这么简单的东西,可是却困扰了很多人。可见有个好的教材是多么的重要。

至于前面“负数的补码是其正数的反码+1”,极为垃圾的教材才会把这个计算方法作为初始方法来教。因为这个计算方法屏蔽了补码的计算原理。其实这不过是“256-欲求的负数的绝对值=此负数的补码”的一个比较取巧的计算方法而已。请看256=100000000=11111111+1,而11111111减任何二进制数的结果就是把这个数取反,那么256-某二进制数A既是:将A取反+1

注:所有讨论均在字节长范围内(8bit)进行

补码原码反码

上一篇:世界十大恐怖片之前十名

下一篇:电脑打不开游戏怎么办

其他文章

  • 茅台酒和茅台镇的酒有什么区别?
  • 无羞无臊是什么意思
  • 2017临床医学考研吧
  • 金融学专业投资科学
  • 坐汽车从东莞到海口要多长时间
  • 白菜用英语怎么说 两颗白菜用英语怎么说
  • 江南十校哪十校
  • 教师资格证是永久性的吗(教师资格证是永久的吗)
  • cvt无级变速和6挡手自一体,有什么区别
  • 黄鹤楼写作背景20字(黄鹤楼写作背景)
  • 2023年达州职业技术学院单招报名条件有哪些
  • 2015年中考平果高中录取分数线是多少
  • 建筑工程测量前途如何?
  • 忠武路演员是什么意思 宋仲基是忠武路演员吗
  • 竹笋有哪些品种,竹笋哪些品种可以吃
  • renee英文名是什么意思
  • 记叙文的表达方式有哪五种(记叙文的表达方式)
  • 对女生说的情话古风句子很甜还撩
  • 麻雀肉怎么做好吃
  • 老鼠用英语怎么读