关于整数原反补的一些认识

关于整数原反补的一些认识

计算机中存储的数据都是以补码的形式存储的,计算机中的整数有无符号数和有符号数之分。最常见的有符号数的计算机表示方式就是补码形式,其次还有原码和反码两种表示形式,之所以会有不同的表示形式,是由于各自的解释方式不同。无符号数只有唯一的解释方法。

如果你疑惑正数的原反补为什么相同,那大概你会查到“规定正数的原反补相同”这样的字眼。

但其实只要了解原反补码的表示方法就一目了然了。

关于整数原反补的一些认识_第1张图片

关于整数原反补的一些认识_第2张图片

因为正数按照上述的表示方法形成的二进制结果都相同,所以称正数的原反补相同,并不是特殊规定。

所以为什么计算机要采用补码呢?

主要有两个原因:

  • 补码可以省去计算机判断符号位或者说判断+/-运算的麻烦。采用补码表示后,不管是加法还是减法都是加法运算。想象一下,一个8位数的"-1+3"运算,如果用原码:10000001 + 000000011,这样你不能直接相加,否则10000100的结果不伦不类。你需要检查符号位,甚至可能要对符号位和运算符做调整。如果用反码11111110 + 00000011,这样直接相加的结果不管是00000001还是10000001都不妥,简直不知所云。还是需要适当的处理符号位和运算方式。如果是补码:11111111 + 00000011 = 00000010,结果直接就是2。这样就避免了对正负或加减的区别处理,ALU中的加法器数字电路中的组合逻辑元件,使用加法逻辑运算来代替减法降低硬件电路复杂性。
  • 虽然反码大多数时候也可以这样正确处理上点存在的问题,但是还有一个问题,就是补码出现了-0,+0不满足连续性、唯一性。所以使用采用补码可解决这些问题。
    一性。所以使用采用补码可解决这些问题。

你可能感兴趣的:(C++,信息存储,整数表示,二进制,原反补)