《计算机组成与体系结构(原书第4版)》 —2.4.3 有符号数的移码表示
2.4.3 有符号数的移码表示
回顾在介绍补码系统时讨论的自行车示例。我们选择一个特定的值(500)作为正英里的最大值,我们分配值从501~999表示负英里。不需要符号,因为我们使用范围来确定数字是正数还是负数。偏移值为M的移码表示(也称为偏移二进制表示)与做某些事非常相似;无符号二进制数值用于表示有符号整数。然而,与原码和补码编码不同,偏移值为M的移码表示更直观,因为具有全0的二进制数字串表示最小的数字,而具有全1的二进制数字串表示最大值。换句话说,这保留了数的顺序。
使用整数M(称为偏移值)的无符号二进制数值代表值0,而位模式中的全零代表整数-M。基本上,十进制整数“映射”(如我们的自行车示例)为无符号二进制整数,但根据它所落的范围,解释为正或负。如果我们使用n位二进制表示,那么需要用等范围的分割方式选择这个偏移值。我们通常选择2n-1-1作为偏移值。例如,如果我们使用4位二进制表示,偏移值应该是24-1-1=7。和原码、1的补码和2的补码一样,n位二进制所能表示的值有一个特定的范围。
把一个有符号整数用偏移值为M的移码表示法表示为无符号二进制值,只需简单地将M加到该整数上。例如,假设我们使用偏移值为7的移码表示法,整数010将表示为0+7=710=01112;整数310将表示为3+7=1010=10102;整数-7将表示为-7+7=010=00002。使用偏移值为7的移码表示法并给定二进制数11112,找到它表示的十进制值,我们只需简单地减去7:11112=1510,并且15-7=8。因此,11112使用偏移值为7的移码表示法表示的值为+810。
让我们比较一下到目前为止已经看到过的编码方案,假设有8位数字:
偏移值为M的移码表示允许我们使用无符号二进制值来表示有符号整数;但重要的是,必须指定两个参数:表示法中使用的位数和偏移值。此外,计算机不能使用为无符号数设计的硬件对偏移值为M的移码执行加法运算,这需要使用特殊的电路。偏移值为M的移码表示法很重要,因为在浮点数中它用于表示整数指数,我们将在2.5节中看到。
- 点赞
- 收藏
- 关注作者
评论(0)