符号幅度二进制格式是最简单的概念格式。在这种表示带符号数字的方法中,最高有效数字(MSD)具有额外的含义。
如果MSD为0,我们可以像对待任何普通的无符号整数一样评估数字。同时我们也将这个数字视为正数。
如果MSD为1,则表示数字为负。
其他位指示数字的大小(绝对值)。假设有4位字长,一些带符号的十进制数及其在SM表示法中的等效形式将在后面出现。
签名十进制 | 符号幅度 |
---|---|
+6 | 0110 |
-6 | 1110 |
+0 | 0000 |
-0 | 1000 |
+7 | 0111 |
-7 | 1111 |
从上表可以明显看出,如果字长为n位,则可以表示的数字范围是-(2 n-1 -1)到+(2 n-1 -1)。可以表示的字长和SM号范围的表如下所示。
字数 | SM号范围 |
---|---|
4 | -7至+7 |
8 | -127至+127 |
16 | -32767至+32767 |
32 | -2147483647至+2147483647 |
请注意,位序列1101对应于无符号数字13,以及SM表示法中的数字–5。它的值仅取决于用户或程序员解释位序列的方式。
数字表示在计算机内部,目的是使用该数字执行一些计算。计算机中最基本的算术运算是加法运算。这就是为什么计算机也可以称为加法器的原因。
当两个具有相同符号的数字相加时,将其值相加并保留公共符号。
使用计算机添加数字(+5)和(+3)。假定数字使用4位SM表示法表示。
111 <- carry generated during addition 0101 <- (+5) First Number + 0011 <- (+3) Second Number 1000 <- (+8) Sum
让我们再举两个带有不同符号的数字的例子。
使用计算机将数字(-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符号通常不用于表示计算机内部的带符号数字。