正数和负数的补码是怎么计算的?

如题所述

所谓的“补码”,是一个“代替负数”的正数。

比如,钟表的时针,倒拨 3 小时,可以用正拨 9 小时代替。

算法是:+9 = -3 + 12。

其中的 12,是时针的周期。+9 就称为-3 的补数。

分针,倒拨 X 分,也可用正拨 (-X + 60) 代替。

三角函数,周期是 2π。

任何的负角度,也可以用正角度代替。

如:-π/2,其等效值是:-π/2 +  2π = +3π/2。

-----------------------

通用的换算公式,是:等效的正数 = 负数 + 周期。

-----------------------

等效值,在计算机专业,就重新命名:补码。

对于 8 位 2 进制数,计数周期就是:2^8 = 256。

-1 的补码:-1 + 256 = 255 = 1111 1111 (二进制)。

。。。

-128 的补码: 128 = 1000 0000。

零和正数,并不存在“等效的正数”。

所以,零和正数,根本就不存在补码。

-----------------------

用补码(正数)代替负数之后,计算机中,就没有负数了。

同时,也就没有减法运算了。

因此,就可以简化计算机的硬件。

只要配置一个加法器,就可以走遍天下。

-----------------------

补码的来源和意义,就是这样的。

补码,与原码反码,并无半点关系。

取反加一,也没有任何的理论基础,都是瞎编的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-01-08
用代符号的八位二进制表示数据,最高位为符号位,1代表负数,0代表正书。其余的七位二进制数来代表实际数值,即是原码。
所以[+50D]原=00110010B,[-50D]原=10110010B。
正数的补码与原码相同,负数的补码,变换规则为:
在原码的基础上,符号位不变,其余七位各位取反,然后在最后一位加1,该向前进位的就进。
所以[-50D]补=11001111。
D表示十进制数,B表示二进制数。
用原码只能表示-127到127,永补码表示为-128到127。
对于你的补充问题,我也不太清楚。大概是看着方便吧