《逻辑与计算机设计基础(原书第5版)》——1.4 算术运算

简介: 本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第1章,第1.4节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 算术运算

r进制的算术运算方法和十进制类似。但是,在r进制的情况下,要特别注意只有r个基本数字可用,而且所有的计算是逢r进1。下面是两个二进制数的加法计算例子(注意做加法运算的操作数的名称):
image

除了每位的和只可能是0和1以外,二进制的加法和十进制的加法规则一样。当然,在二进制加法中,当某位的和大于1时就会产生进位(而在十进制中,只有当和大于9才会产生进位),进位都会加入到临近的高位。在第一个例子中,因为所有的进位都为0,所以和就相当于被加数与加数的各位简单相加。在第二个例子中,从右数第2列的两位的和是2,会向高位产生一个进位,而本位为0(2=2+0)。此进位参与第3位的加法运算,这样第3位的和则为3,同样要向高位产生一个进位,而本位则为1(3=2+1)。
下面是两个二进制数的减法运算过程(同样,注意操作数的名称):
image

二进制减法运算规则也和十进制一样,除了被减数某位向高位的借位相当于在本位加2(而十进制中一个借位相当于在本位加10)。在第一个例子中,没有任何借位发生,所以差只是被减数与减数按位简单相减。在第二个例子中,在最右列,由于被减数的该位是0,而减数的该位为1,所以必须向第2位借位,这样第一位的差就是1(2+0―1=1)。在第2位,由于它已被借位,值为0,而减数的第2位为1,所以它还须向第3位借位。如果被减数小于减数,我们就将减数减去被减数,在差的前面加上一个负号。第三个例子说明的就是这种情况,注意减数和被减数的位置被调换了。
最后要演示的是二进制的乘法计算,同样很简单。在二进制乘法中,乘数的数字非0即1。这样,部分乘积就是0或被乘数。下面是乘法的例子:
image

八进制、十六进制以及其他r进制数的算术运算都需要查询对应进制中位与位相加或相乘的结果对应表。一种更简单的办法是将r进制数中一列对应的位转换为十进制数,按十进制规则进行计算,这样我们就可以很方便地使用我们经常习惯使用的十进制计算表,计算完后,再将和以及进位转换回r进制。例1-2是用这种方法计算两个十六进制数59F与E46之和的步骤。
例1-2 十六进制数加法
计算(59F)16+(E46)16:
image

在例子右边等价的十进制的计算过程中,必须运用推理得出对应十六进制中的每一位。例如,在计算右边第一列的F+6时,我们转换成等价的十进制计算15+6=21,然后在转换回十六进制时,我们注意到21=16+5,所以,本位的结果为5,并向高位进1。其他两列的计算方法相同。 ■
总的来说,做两个r进制数的乘法计算时,每一步可以采用十进制的规则进行计算,同时将每一步的中间结果转换为r进制数。例1-3演示的是两个八进制数的乘法。
例1-3 八进制乘法
计算(762)8×(45)8:
image

上图右边演示的是每一对八进制位的心算过程。八进制的0~7的数字和十进制中相对应的数字是一样的。每一对八进制数位的相乘以及加上低位的进位,都可以按十进制的计算方法进行,然后再将这一步的结果转换回八进制,如果结果是两位的八进制数,则高位就是本列的进位,低位就是本列的计算结果。例如,(5×2)8=(12)8,结果中的高位1作为进位加入(5×6)8的计算结果,低位的2就是本列的八进制计算结果。乘数最高位的进位可直接作为乘积中下一位的结果,比如46中的4。 ■
十进制数转换为其他进制数
之前我们采用多项式展开的方法将其他进制的数转换为十进制数。现在我们采用一种通用的过程将十进制数转换为r进制数。如果待转换的数中有小数点,我们要将这个数分成整数部分与小数部分,两个部分的转换要分别进行。通过采用短除法可以将十进制整数转换成r进制数,步骤就是不断用r除要转换的十进制数以及每步产生的商,直至最后的商等于0,每一步所得到的余数就可构成所要转换的结果,其过程可以用例1-4具体说明。
例1-4 十进制整数转换为八进制数
将十进制数153转换为八进制数:
基底为8。首先,用8除153,商为19,余数为1。然后,继续用8除19,商为2,余数为3。最后,用8除2,商为0,余数为2。每一步的余数就可构成我们想要得到的八进制数的位。
image

注意,在例1-4中,余数从最后到第一,按逆序构成转换数的高位到低位,如箭头所指。商不断地被r除直到为0。同样,可以采用这种方法,将十进制数转换为二进制数,如例1-5所示。在这个例子当中,r是2,所以短除法中的除数是2。
例1-5 十进制整数转换为二进制数
转换十进制数41为二进制数:
image

当然,反过来,将二进制数按2的指数多项式展开求和就能得到对应的十进制数。

            (41)10=32+8+1=(101001)2                 ■

将十进制小数转换为r进制形式的方法和整数的转换方法有所不同,称为“连乘法”,也就是不断地用r乘以要转换的十进制小数,每次相乘得到的结果的整数部分构成转换结果的对应的位。这种方法可以用例1-6说明。
例1-6 十进制小数转换为二进制形式
将十进制小数0.6875转换为二进制数:
首先,将0.6875乘以2,结果中有整数与小数,再将新的小数与2相乘,又得到新的整数与小数,这样不断继续,直到小数部分为0或满足精确要求为止。二进制数中的位就由每步得到的整数部分构成,方法如下:
image

注意例子中每步得到的整数按箭头方向排列即可得到转换后的结果。在这个例子中,转换后的小数是有限的,但有时不断连乘并不能使小数部分变为0,这时必须决定需要多少位小数才能满足精确度的要求。由于转换的方法是用r进行连乘,那么将十进制小数转换为八进制形式,就得用8来连乘,如例1-7所示。
例1-7 十进制小数转换为八进制形式
将十进制小数0.513转换为小数位为3位的八进制形式:
image

转换结果中的3位数由每步的整数来构成,我们连乘4次,得到4个整数,注意到最低的一位整数为5,在八进制中按取整法(即类似十进制中的四舍五入),向次低位6进一位,这样就得到:

                (0.513)10=(0.407)8                  ■

如果待转换的数中既有整数部分又有小数部分,就可以将两部分分别转换,最后组合形成结果。比如,采用例1-4和例1-7的结果,我们可以得到:
(153.513)10=(231.407)8

相关文章
|
3月前
|
定位技术 API 网络安全
2026年网站建设需要多少钱?
网站建设费用从千元到数十万元不等,主要取决于开发方式、功能复杂度及设计需求。模板站成本最低,定制开发适中,复杂系统费用最高。建议明确核心需求,选择匹配方案,并关注长期维护成本与隐性费用。
2181 8
|
1月前
|
人工智能 负载均衡 Java
Java接入AI大模型:企业级多模型对接与高并发稳定实践
在AI大模型赋能企业数字化转型背景下,Java团队面临多模型对接碎片化与高并发稳定性两大痛点。JBoltAI框架提供统一接入层、智能负载均衡、队列化流量管控及熔断降级等能力,支持20+主流模型,助力Java系统稳定、高效、可扩展地集成AI能力。(239字)
231 2
|
Oracle 关系型数据库 Linux
|
2月前
|
存储 JavaScript 前端开发
URL编码/解码 核心JS实现
这是一款基于Vue开发的轻量级URL编码/解码在线工具,纯前端实现,无需依赖外部库。利用`encodeURI`/`encodeURIComponent`及对应解码方法,支持一键编码、解码、清空与复制,并自动聚焦输入框,提升使用效率。
486 3
|
3月前
|
人工智能 供应链
智能体来了:2026,AI 元年开启的新赛道
2026年,AI从“能说会写”的模型跃升为“能想会做”的智能体:目标驱动、自主规划、调用工具、持续修正。它不再仅是工具,更成为现实世界的参与者。人类由此面临根本命题——重定义“参与者”,重构角色、责任与文明边界。(239字)
243 4
|
3月前
|
机器学习/深度学习 人工智能 Python
阿里云PAI交互式建模PAI-DSW免费试用,每月250计算时 3个月
阿里云PAI-DSW交互式建模免费试用,每月250计算时,最长3个月共750小时。支持JupyterLab、WebIDE,适用大模型、AIGC、机器学习等开发场景。新认证用户可申领,机型覆盖A10/V100/G6。
|
3月前
|
存储 弹性计算 分布式计算
2026年阿里云 ECS 本地盘解析:NVMe SSD 与 SATA HDD 特性及选型指南
在阿里云 ECS 实例的存储方案中,本地盘凭借 “物理机直连” 的特性,提供低延迟、高 IOPS 的存储体验,成为高性能与海量存储场景的重要选择。目前阿里云本地盘主要分为 NVMe SSD 与 SATA HDD 两类,二者在性能、适用场景、实例兼容性上差异显著,需结合业务需求精准匹配。本文从技术特性、性能参数、适配实例及场景选型四方面展开解析,为用户提供客观参考。
2026年阿里云 ECS 本地盘解析:NVMe SSD 与 SATA HDD 特性及选型指南
|
4月前
|
机器学习/深度学习 存储 人工智能
全球主流开源向量数据库
开源向量数据库凭借高效索引、相似性搜索、可扩展性及与机器学习框架的深度集成,正成为AI应用的核心基础设施。其活跃社区持续推动生态发展,广泛支持推荐系统、实时分析等场景,助力高维数据高效管理与智能应用落地。
|
4月前
|
存储 缓存 搜索推荐
电商系统云架构设计
本文深入解析支撑千万级电商业务的云架构设计,涵盖高并发处理、数据层优化、智能搜索与推荐、大促保障等核心环节。基于云原生与微服务理念,构建弹性、稳定、高效的技术体系,助力企业应对流量峰值与复杂业务挑战,实现规模化发展。
209 0