正数和负数的补码是怎么计算的?
所谓的“补码”,是一个“代替负数”的正数。
比如,钟表的时针,倒拨 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。
零和正数,并不存在“等效的正数”。
所以,零和正数,根本就不存在补码。
-----------------------
用补码(正数)代替负数之后,计算机中,就没有负数了。
同时,也就没有减法运算了。
因此,就可以简化计算机的硬件。
只要配置一个加法器,就可以走遍天下。
-----------------------
补码的来源和意义,就是这样的。
补码,与原码反码,并无半点关系。
取反加一,也没有任何的理论基础,都是瞎编的。
所以[+50D]原=00110010B,[-50D]原=10110010B。
正数的补码与原码相同,负数的补码,变换规则为:
在原码的基础上,符号位不变,其余七位各位取反,然后在最后一位加1,该向前进位的就进。
所以[-50D]补=11001111。
D表示十进制数,B表示二进制数。
用原码只能表示-127到127,永补码表示为-128到127。
对于你的补充问题,我也不太清楚。大概是看着方便吧