计算机科学(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、无
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章的版权归属于【原创作者】; 转载或引用时请【保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/17055991.html