《计算机组成与体系结构(原书第4版)》 —2.4.3 有符号数的移码表示

举报
华章计算机 发表于 2019/11/19 12:29:38 2019/11/19
【摘要】 本节书摘来自华章计算机《计算机组成与体系结构(原书第4版)》一书中第2章,第2.4.3节,作者是[美] 琳达·纳尔(Linda Null)朱莉娅·洛博(Julia Lobur)宾夕法尼亚州立大学,张 钢 魏继增 李雪威天津大学 李春阁 何 颖天津大学仁爱学院 译。

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位数字:

image.png

偏移值为M的移码表示允许我们使用无符号二进制值来表示有符号整数;但重要的是,必须指定两个参数:表示法中使用的位数和偏移值。此外,计算机不能使用为无符号数设计的硬件对偏移值为M的移码执行加法运算,这需要使用特殊的电路。偏移值为M的移码表示法很重要,因为在浮点数中它用于表示整数指数,我们将在2.5节中看到。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。