模拟和数字转换/有符号和无符号量
外观
< 模拟和数字转换
任何数字都可以只使用“位”(数字 0 和 1)来表示;例如,二进制数 1101 表示十三。这些位按顺序排列,表示二的升幂。
最右边的位称为“最低有效位”(LSB),因为它表示 2 的最低次幂 1;最左边的位称为“最高有效位”(MSB),因为它表示 2 的最高次幂。
无符号数以一种简单的方式表示,LSB 在最右边,MSB 在最左边。无符号数总是正数(或零),因为它们没有用于表示负数的符号。
为了表示负数,我们需要实现有符号数。有两种通用的方案来表示有符号数:符号大小或补码。还有一些其他方案,例如补码,但我们在这里不讨论它们。有关此主题的更多信息,请参见数字电路的相关部分。
符号大小数与无符号数相同,只是增加了一个“符号位”。如果符号位为 0,则该数为正;如果符号位为 1,则该数为负。
实现补码所需的数字逻辑比符号大小表示要简单得多。因此,大多数计算机以补码格式存储值。补码遵循以下规则
- 一半的数字是正数,从 0 到 (N/2)−1,其中 N 是使用位数可以表示的值的数量(包括零)。如果我们有 n 位,则此值为
- 负数是通过反转正数的位,然后加 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
- 重要的是要注意,单个位模式可能具有不同的含义,具体取决于您的解释方式。因此,保持解释一致非常重要。
另一种类型的二进制数称为“浮点数”。这些数字允许使用位来表示分数量。浮点数超出了本书的范围,但请记住,某些采样器以浮点格式输出值。