lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

计算机科学(cs):负数的补码为什么是“绝对值取反+1”?

 

 

 

 

一、补码

 

  1、答:计算机所有的数字都表示为补码。在计算机中,正数、零、负数,都可以采用补码表示。补码,统一了数字在计算机中的表示方法。

 

  2、补码:将所有的数字都采用或部分采用“非负数”的表示方法。非负数,补码是“非负数”本身;负数,补码是负数的“绝对值取反加1”。

 

  3、负数的补码,就是正数的补码的相反数。负数的表示  = 补码 + 符号位。带符号的数字的符号位,保存在“标志寄存器”的SF标志位。

 

 

 

 

二、负数的补码为什么是“取反+1”?

 

  1、前提说明:

    1.1、寄存器的说明:N位的寄存器,记为regN。举例:reg16,表示16位二进制的寄存器。

    1.2、指数表示:Mexp(N),表示M的N次方。举例:2exp(16),表示2的16次方。

 

  2、理论说明:

    2.1、reg16,在理论上,可以表示的最大的二进制数字是:2exp(16) = 10000H(16进制)=65536(10进制)。事实上,reg16,可以表示最大的二进制数字是“FFFFH”(65535,10进制)。

    2.2、reg16,如何表示“2exp(16)=(10000H,16进制)”?答曰:10000H = FFFFH + 1H

 

    2.3、4N位二进制寄存器:

      2.3.1、reg(4N),表示“4N”位二进制寄存器。reg(4N)表示最大的二进制数字为:2exp(4N)。

      2.3.2、如何表示数字“2exp(4N)”?

 

 

  3、负数的补码:

    3.1、假设X,Y都是4位16进制数字。X为负数,Y是X的补码。

    3.2、负数和补码的关系:-X + Y = 10000H-X + Y = FFFFH + 1。所以X的补码Y可以表示为:“Y = FFFFH +  1H  +  X”。

    3.3、负数X的补码Y的说明:  Y  =  (FFFFH  +  X)  +  1H

      3.3.1、(FFFFH  +  X):表示绝对值取反的过程。注意:X是负数

    3.4、实例:在16位寄存器中,求-2的补码。

      3.4.1、第一步:-2表示为4位16进制的数字:-0002H

      3.4.2、第二步:计算-2的补码:FFFFH + (-0002H) + 1H = FFFEH

 

 

 

 

三、参考资料:

 

  1、无

 

posted on 2023-01-16 17:36  lnlidawei  阅读(345)  评论(0编辑  收藏  举报