原码,补码的除法

简介: 原码,补码的除法

我们已经学习了如何进行原码,补码的乘法:

http://t.csdnimg.cn/GjkIn

现在以同样的思路学习除法运算:

一.原码的除法

对于手算的10进制除法,我们是这样计算的

为什么这样计算呢,我们来看一下:

第一步得到的余数为0.2110,我们需要拼凑上小于等于这个数,且最接近这个数的值,即

0.985*0.2=0.1970,接下来继续以这个规则拼凑

0.985*0.01=0.00985

0.985*0.004=0.00394

最后得到商就是0.214

那么同理,2进制的手算除法

计算机如何实现除法:

运算器结构如下:

ACC:累加器,用于存放操作数,或运算结果

MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果

X:通用的操作数寄存器,用于存放操作数

ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算

ACC用于存储被除数、余数,MQ用于存储,X用于存储除数

(1)恢复余数法

实现方法:上商0/1,得到余数,余数末尾补0

符号位单独处理:符号位=

数值位取绝对值进行除法计算:


设机器字长为5位(含1位符号位,n=4),X=0.1011,y=0.1101,采用原码恢复余数法求x/y


|x|=0.1011,|y|=0.1101,[|y|]补=0.1101,[-|y|]补=1.0011


这里注意计算机会默认上商1

手算时,每一位商取0/1 是通过判断当前余数和除数的大小确定的:

那么计算机就会将ACC(余数)-通用寄存器(除数)--->ACC


将余数-除数,就是将余数+除数的负值的补码([-|y|]补),因为计算机中没有减法电路,所有减法都是通过补码的加法等价实现的,这里的加法是通过ALU中的加法电路实现的,不太理解可以先看:


http://t.csdnimg.cn/ZZybo


1.(ACC)+[-|y|]补-->ACC=01011+10011=11110


这里相减的结果是负数,所以说明被除数比除数更小,所以应该上商0,计算机检测到符号位为

1,所以将MQ上商0

2.因为商0,而不是商1,所以保存在ACC中的数值是错误的,也就是说

不应该为(ACC)+[-[y]]补-->ACC,而是(ACC)-0-->ACC,为了恢复原来的数,我们再加上[|y|]补,就是

(ACC)+[|y|]补--->ACC

11110+01101=01011

恢复原来的ACC值,并且上商0

3.将ACC与MQ的数统一进行逻辑左移,MQ的最高位会移动到ACC的最低位,原本的ACC最高位被丢弃,低位补0

4.同理,右移后MQ还是会默认上商1:(ACC)-(除数)--->ACC

(ACC)+[-|y|]补--->ACC

 10110+10011=01001

此时计算机识别当前符号位为正,那么这一步商1是对的

不需要恢复余数,直接进行左移

同理如此重复,可以得到5位商:0.1101

而最终得到的余数需要在0.0111的基础上* (这里的n就是数值位的个数,在这里就是4)

这一步注意,最后一步上商1,若余数为负也就是红色字体为1,那么也需要进行恢复余数并商0

5.最后符号位0 0=0

重点看这

以上是恢复余数法的所有过程:

1.默认商1,+[-|y|]补

2.余数为负,改为商0,并恢复余数(+[|y|]补),再进行左移


3.余数为正,直接商1,不用恢复余数,直接左移


4.最后的商位数为n+1(数值位+符号位),即上商n+1次,左移n次(最后一次上商不左移)


注:最后一步上商1,若余数为负也就是红色字体为1,那么也需要进行恢复余数并商0


5.异或判断符号位的正负

(2)不恢复余数法(加减交替法)

我们可以观察恢复余数这几部,当发现余数为负时,需要加上[|y|]补恢复余数,在进行左移,减去余数([-|y|]补),才能得到下一步的商,根据算式,就是将a--->2a+b的过程:也就是将余数左移一位(2a)+除数的绝对值(b)

所以得到不恢复余数法

重点看这

1.默认商1

2.若余数为负则可直接商0,让余数左移1位再加上|除数|(+[|y|]补),得到下一个新余数


3.若余数为正,则商1,让余数左移1位再减去|除数| (+[-|y|]补),得到下一个新余数


4.最后的商位数为n+1(数值位+符号位)


注:加/减n+1次,每次加减确定一位商;左移n次(最后一次加减完不移位)


最终可能还要再多一次加,这需要看余数的正负,下面有讲(所以加/减可能是n+1次,n+2次)


5.异或判断符号位的正负


注:余数的正负性与商相同,若最后一步得到的余数是一个负值,需商0,并且+[|y|]补得到正确的余数

:这一篇讲的是定点小数的除法运算,被除数一定要小于除数,若被除数大于除数,最后商会为:1.几,而定点小数无法表示大于1的范围,那么机器就是通过第一步得到的商判断的:

第一步被除数-除数,一定为负,商要从默认的1,改为0,若第一步的商不为0,那么就会直接停止除法运算

二. 补码除法运算

补码的除法运算与原码的除法运算中的加减交替法有很多相似


原码中的加减交替法与补码的除法运算的区别:


1.补码除法中,符号位会参与运算


2.被除数/余数,除数都会采用双符号位


3.这里的除数不是原码中的|除数|的补码,而是除数的补码,因为符号位也会参与运算

4.在原码加减交替法中,第一步一定是-|除数|,而在补码的加减交替法中,是根据被除数与除数是否同号来判断+[y]补或+[-y]补

第一步:

被除数和除数同号,则被除数减去除数;

异号则被除数加上除数

接下来的每一步:

余数和除数同号,商1,余数左移一位减去除数;

余数和除数异号,商0,余数左移一位加上除数。

重复n次

设机器字长为5位(含1位符号位,n=4),x=+0.1000,y=-0.1011,采用补码加减交替除法求x/y

例如00.1000与11.0101,异号加上除数,得到11.1101,接下来看余数和除数,余数为11.1101,除

数为11.0101,同号,商1,余数左移一位并且减除数。如此重复n次(n为数值位的个数)


注意:


在补码中,最后一步是异号的,应该商0,但是在补码加减交替法中,末尾商恒置1,这样做精度误差不超过


而在原码中,若最后一步得到的余数是一个负值,需商0,并且+[|y|]补得到正确的余数

重点看这

1.第一步:被除数和除数同号,则被除数减去除数;异号则被除数加上除数

接下来的每一步:

余数和除数同号,商1,余数左移一位减去除数;

余数和除数异号,商0,余数左移一位加上除数。

2.最后商位数为n+1(数值位+符号位),加/减次数n+1,左移次数为n

3.末位恒置1

总结:

原码加减交替法与补码加减交替法的区别:

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
8月前
|
人工智能 API 数据安全/隐私保护
近期非常风靡非常逼真的AI视频内容由sora生成的视频是怎么回事?-优雅草卓伊凡
近期非常风靡非常逼真的AI视频内容由sora生成的视频是怎么回事?-优雅草卓伊凡
1740 12
近期非常风靡非常逼真的AI视频内容由sora生成的视频是怎么回事?-优雅草卓伊凡
|
前端开发 JavaScript 搜索推荐
Marp 入门与教程:让你一分钟爱上代码写PPT的乐趣
Marp 是一个基于 Markdown 的开源幻灯片制作工具,可将 Markdown 文档轻松转换为精美幻灯片。支持 VS Code 插件实时预览、命令行工具批量处理、自定义主题等,适用于技术分享、工作汇报和教学等多种场景。相比 LaTeX Beamer,Marp 学习成本低,跨平台支持好,设计现代美观。
|
Web App开发 小程序 iOS开发
Fiddler - 抓包手机App、微信小程序等网络请求
Fiddler - 抓包手机App、微信小程序等网络请求
2507 0
Fiddler - 抓包手机App、微信小程序等网络请求
|
Linux API C++
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(一)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
3827 3
|
存储 安全 数据库
阿里云服务器计算型、通用型、内存型主要实例规格性能特点和适用场景汇总
阿里云服务器ECS计算型、通用型、内存型规格族属于独享型云服务器,在高负载不会出现计算资源争夺现象,因为每一个vCPU都对应一个Intel ® Xeon ®处理器核心的超线程,具有性能稳定且资源独享的特点。本文为大家整理汇总了阿里云服务器ECS计算型、通用型、内存型主要实例规格族具体实例规格有哪些,各个实例规格的性能特点和主要适用场景。
阿里云服务器计算型、通用型、内存型主要实例规格性能特点和适用场景汇总
|
存储 搜索推荐 数据挖掘
模型并行之Embedding表
Embedding表在推荐模型中起着关键作用,可将高维稀疏数据转化为低维稠密向量,支持用户兴趣建模与相似度计算。本文介绍了5种Embedding表切分方式:Table Wise(集中存储)、Row Wise(按key维度切分)、Column Wise(按列切分)、Table Wise & Row Wise(组合行切分)及网格切分(综合多种方式)。此外,还提及了数据并行方法,即每个Rank保留整个表的副本。这些策略有助于优化大规模模型训练中的存储和计算资源分配。
|
数据采集 人工智能 自然语言处理
【企业实践】雅戈尔: 3 亿行数据表构成的“孤岛”,如何真正为决策提效?
雅戈尔通过 Dataphin 进行数据建设与治理,在业务应用过程中为决策提供依据,提升效率。
726 3
【企业实践】雅戈尔: 3 亿行数据表构成的“孤岛”,如何真正为决策提效?
|
存储 Serverless Python
函数的返回值
在编程中,函数不仅用于执行特定的任务,还经常用于计算和返回结果。函数的返回值是函数执行完毕后向调用者提供的信息或数据。通过返回值,我们可以从函数中获取所需的结果,并将其用于后续的计算或操作。本文将详细讨论函数的返回值,并附上相应的代码示例。
1361 1
|
机器学习/深度学习 资源调度 PyTorch
面向大规模分布式训练的资源调度与优化策略
【8月更文第15天】随着深度学习模型的复杂度不断提高,对计算资源的需求也日益增长。为了加速训练过程并降低运行成本,高效的资源调度和优化策略变得至关重要。本文将探讨在大规模分布式训练场景下如何有效地进行资源调度,并通过具体的代码示例来展示这些策略的实际应用。
1557 1