「计算机科普」补码 计算机系统数值表示 - Extremeer 极振科技传媒工作室

1. 真值与机器数

真值是原来的数,机器数为相应存储在电脑内的二进制数。

2. 模的概念

一个计量系统的计数范围。

生活实例:时钟的模为12,计量范围是0~11,11过后又回到 0。
n位计算机数的模为2n,计量范围是0~(2n-1)。

运用:n=4,模为24=16,计量范围是0~15(二进制表示0000~1111)。如当前数15的二进制值为1111,则再加1,计数值就变为了0000,真值就变成了0,而在最高位上溢出了一个1。

3. 补码(以8位二进制为例)

本质:用大的正数来表示小的负数,化减为加。

生活实例:在时钟内:从8点调到5点,有8-3=8+9,则-3=9(绝对值相加等于模)

(1) 原理

8位二进制数原本计数的范围是0~255,因需要表示负数使用补码,将128~255用来表示负数(-1~-128)其二进制首位为1,0~127不变仍表示正数(0~127)其二进制首位为0。

若最终结果超出范围,可增加位数避免溢出。

例:若想记录数128,则需要将8位二进制数提升至16位,扩大计数范围避免溢出。

(2) 补码的二进制表示

如果n是正数,补码就是其二进制,如果n是负数,补码则是n+256的二进制。

「+73」补码 = 01001001
「-73」补码 = 10000000 - 01001001=10110111(183的二进制)

(3) 补码的运算

① 真值到补码:

  • 当n是负数,可以通过其相反数各位取反加1来快速求出补码。

例:设n=8,求-36补码。
36的二进制=00100100
各位取反得11011011
末位加1结果为11011100即为补码

② 补码到真值:

  • 如果补码最高位是1(即真值128以上,代表负数),将各位取反加一,转换为十进制再加负号。
  • 如果补码最高位是0(即真值127以下,代表正数),直接转换为十进制即可。

例:假设n的八位补码是10101010,求n真值。
10101010取反加一=01010110
01010110的十进制=86
添加负号n=-86

评论