符号幅度表示法
符号幅度二进制格式是最简单的概念格式。在这种表示有符号数的方法中,最高有效位 (MSD) 具有额外的含义。
如果 MSD 为 0,我们可以像对待任何普通的无符号整数一样评估该数字。并且我们也将该数字视为正数。
- 如果 MSD 为 1,则表示该数字为负数。
其他位表示数字的幅度(绝对值)。以下是一些有符号十进制数及其在 SM 表示法中的等效值,假设字长为 4 位。
有符号十进制 | 符号幅度 |
---|---|
+6 | 0110 |
-6 | 1110 |
+0 | 0000 |
-0 | 1000 |
+7 | 0111 |
-7 | 1111 |
范围
从上表可以看出,如果字长为 n 位,则可以表示的数字范围为 -(2n-1 -1) 到 +(2n-1 -1)。下表显示了字长和可以表示的 SM 数字范围。
字长 | SM 数字的范围 |
---|---|
4 | -7 到 +7 |
8 | -127 到 +127 |
16 | -32767 到 +32767 |
32 | -2147483647 到 +2147483647 |
请注意,位序列 1101 对应于无符号数 13,以及 SM 表示法中的数字 -5。其值仅取决于用户或程序员如何解释位序列。
加法
数字在计算机内部表示是为了使用该数字执行一些计算。计算机中最基本的算术运算就是加法运算。因此,计算机也可以称为加法器。
当添加两个符号相同的数字时,添加值并保留公共符号。
示例 1
使用计算机添加数字 (+5) 和 (+3)。假设这些数字使用 4 位 SM 表示法表示。
111 <- carry generated during addition 0101 <- (+5) First Number + 0011 <- (+3) Second Number 1000 <- (+8) Sum
让我们再举一个符号不同的两个数字的例子。
示例 2
使用计算机添加数字 (-4) 和 (+2)。假设这些数字使用 4 位 SM 表示法表示。
000 <- carry generated during addition
1100 <- (-4) First number
+ 0010 <-(+2) Second Number
1110 <- (-2) Sum
这里,计算机给出了错误的答案 -6 = 1110,而不是给出正确的答案 -2 = 1010。
缺点
0 有两种表示法 (0000 和 1000),当计算机想要测试 0 结果时,这非常不方便。
对于计算机来说,执行算术运算并不方便。
因此,由于上述提到的歧义,SM 表示法通常不用于在计算机内部表示有符号数。