跳转到内容

模拟和数字转换/有符号和无符号量

来自维基教科书,开放世界中的开放书籍

二进制数表示

[编辑 | 编辑源代码]

任何数字都可以只使用“位”(数字 0 和 1)来表示;例如,二进制数 1101 表示十三。这些位按顺序排列,表示二的升幂。

最右边的位称为“最低有效位”(LSB),因为它表示 2 的最低次幂 1;最左边的位称为“最高有效位”(MSB),因为它表示 2 的最高次幂。

无符号数

[编辑 | 编辑源代码]

无符号数以一种简单的方式表示,LSB 在最右边,MSB 在最左边。无符号数总是正数(或零),因为它们没有用于表示负数的符号。

有符号数

[编辑 | 编辑源代码]

为了表示负数,我们需要实现有符号数。有两种通用的方案来表示有符号数:符号大小或补码。还有一些其他方案,例如补码,但我们在这里不讨论它们。有关此主题的更多信息,请参见数字电路的相关部分。

符号大小

[编辑 | 编辑源代码]

符号大小数与无符号数相同,只是增加了一个“符号位”。如果符号位为 0,则该数为正;如果符号位为 1,则该数为负。

实现补码所需的数字逻辑比符号大小表示要简单得多。因此,大多数计算机以补码格式存储值。补码遵循以下规则

  1. 一半的数字是正数,从 0 到 (N/2)−1,其中 N 是使用位数可以表示的值的数量(包括零)。如果我们有 n 位,则此值为
  2. 负数是通过反转正数的位,然后加 1 来获得的。

例如,如果我们在四位补码数中拥有数字 5(0101),我们可以通过反转该数字(1010)并加 1(1011)来获得 -5 的表示。

要获得负数的正值,我们逆转该过程。

例如,4 位有符号数(3 个数据位 + 1 个符号位)是

 0111 = +7
 0110 = +6
 0101 = +5
 0100 = +4
 0011 = +3
 0010 = +2
 0001 = +1
 0000 = +0
 1111 = −1
 1110 = −2
 1101 = −3
 1100 = −4
 1011 = −5
 1010 = −6
 1001 = −7
 1000 = −8
问) 你不是几页前才告诉我 1101 代表十三吗?

是的。它也可以代表很多其他东西。位 1101 形成一个位模式,可以解释为任何东西。当我们谈论无符号算术时,1101 在十进制数中是“13”。当我们谈论有符号算术时,1101 可能意味着 −3,如果我们正在进行 4 位有符号算术。

  • 在 16 位有符号算术中,1101 是 13
  • 在符号大小表示中,1101 是 −5。
  • 在补码中,1101 是 −4
重要的是要注意,单个位模式可能具有不同的含义,具体取决于您的解释方式。因此,保持解释一致非常重要。

浮点数

[编辑 | 编辑源代码]

另一种类型的二进制数称为“浮点数”。这些数字允许使用位来表示分数量。浮点数超出了本书的范围,但请记住,某些采样器以浮点格式输出值。

进一步阅读

[编辑 | 编辑源代码]
华夏公益教科书