符号幅度表示法


符号幅度二进制格式是最简单的概念格式。在这种表示有符号数的方法中,最高有效位 (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 表示法通常不用于在计算机内部表示有符号数。

更新于: 2020 年 6 月 27 日

10K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告