科技 · 科普

补码与计算机的数值表示

介绍计算机补码的基本原理,理解计算机系统如何存储和表示有符号数值。

补码与计算机的数值表示
介绍计算机补码的基本原理,理解计算机系统如何存储和表示有符号数值。

1. 真值与机器数

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

2. 模的概念

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

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

运用:n=4,模为 2^(4)=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

分享文章