《计算机组成与体系结构(原书第4版)》 —2.3 不同进制之间的转换

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

2.3 不同进制之间的转换

戈特弗里德·莱布尼茨(1646—1716)首次将十进制系统推广到基于其他基的计数系统中。他认为任何整数都可以由一系列的1和0表示。直到20世纪40年代末建成第一个二进制数字计算机之前,这个二进制系统只是一种数学上的好奇心。今天,它几乎成为每一个依赖数字控制的电子设备的核心。

由于其简单性,所以二进制系统可以很容易地转换为电子电路,同时,也便于人们理解。经验丰富的计算机专业人员可以很轻松地识别较小的二进制数(如表2-1所示)。但是,通常在转换较大值和分数时,需要一台计算器或者铅笔和纸。幸运的是,转换技术通过一点练习就可以很容易地掌握。我们将在下面的小节中展示一些较简单的转换技术。

表2-1 一些需要记住的数字 

 image.png

2.3.1 无符号整数的转换

我们从无符号数的基本转换开始。转换有符号数(可以是正数或负数)更复杂,重要的是,在继续转换有符号数之前需要首先了解转换的基本技术。

基数系统之间的转换可以通过使用重复减法或除留余数法来完成。减法比较麻烦,并且需要熟悉所使用的基数的幂。但是由于它是两种方法中更直观的,所以我们将首先解释它。

例如,假设我们要将10410转换为基数为3的数。我们知道34=81,它是小于104的3的最大幂,所以基数3的数字将会有5位数的宽度(每个基数幂一个:0~4)。我们用104减去81,差值为23。我们知道下一个幂为3,但33=27太大了,23不够减,所以注意到零“占位符”,并寻找需要多少次用32=9去分23。我们看到它可以执行两次并减去18。剩下5,从中减去31结果为3,留下2,2=2×30。这些步骤显示在例2.2中。

例2.2使用重复减法将10410转换为基数为3的数。

104-8123=34×1

-023=33×0

-185=32×2

-32=31×1

-20=30×2

10410=102123  除留余数方法是比重复减法更快更容易的方法。它采用的想法是使用基数的连续除法,实际上是基数幂的连续减法。我们顺序地除以基数,然后从底部到顶部读取得到的余数。该方法见例2.3。

例2.3转换10410到基数为3的数。

3104 2 104除以3结果是34,余数为2

334 1 34除以3结果是11,余数为1

311 2 11除以3结果是3,余数为2

33 0 3除以3结果是1,余数为0

31 1 1除以3结果是0,余数为1

  0

从下向上读余数部分,得到:10410=102123。

此方法适用于任何基数,并且由于计算的简单性,所以它在从十进制到二进制的转换中特别有用。例2.4显示这样的转换过程。

例2.4把14710转换为二进制。

2147 1 147除以2结果是73,余数为1

273 1 73除以2结果是36,余数为1

236 0 36除以2结果是18,余数为0

218 0 18除以2结果是9,余数为0

29 1 9除以2结果是4,余数为1

24 0 4除以2结果是2,余数为0

22 0 2除以2结果是1,余数为0

21 1 1除以2结果是0,余数为1

  0

从下向上读余数,得到:14710=10 010 0112。

具有N位的二进制数可以表示无符号整数的范围为0~2N-1。例如,4位可以表示十进制数0~15,而8位可以表示数0~255。当进行二进制数的算术操作时,可以由给定位数表示值的范围,这非常重要。考虑有一个4位长度的二进制数,我们希望把11112(1510)加到11112上。我们知道15加15是30,但30不能仅使用4位来表示。这是一个有溢出的例子,其发生在无符号二进制表示中,当算术运算的结果在给定位数允许的精度范围之外出现溢出时。在2.4节讨论有符号数字时,我们会更详细地解释溢出。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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