问题:计算机如何来计算除法的?

第一步:分析除法

现在做一个简单的除法 56/7,大部分人会很快一闪"七八五十六",很快能算出结果是8.这是九九乘法表作怪,如果我么没有背诵过乘法表,我们如何来计算这个简单的除法呢?其实大致过程如下:

我们首先会比较56中的十位数,既5和除数7来比较,从而来计算我们商的十位上是几?这其实是个选择题,我们备选的答案有0,1,2,3,4,5,6,7,8,9(因为这是十进制的世界)。我们选择了0,因为只有0乘上7以后才会是适合5的答案,因为我们保证了余数是个正数。如是我们就有了商的十分位上为0.接下来我们开始计算个位上的数,现在变成了余数5×10 + 6 来和7做比较,同样的选择题,我们循环开始选择起,从0一直到9,最终我们选择了8,因为它是使得余数大于等于0的最大一个数。从而个位我们得到值为7.由此得到答案是07,且余数为0.

接下来,来个难度大一点的除法-3456/11,这次我们还是从千位开始(符号问题最后处理),明显千位为0,因为3对11,我们只能选择0,接下来变成了余数3,3×10 + 4 和11比较,我们选择了3,现在我们的商变成了03,余数变成了1.进一步,1× 10 + 5 和11比较,我们选择了1,于是商变成了031,而余数为4.再接近一点4 × 10 + 6 比11,我们选择了4,商变成恶劣0314,而余数为2.于是我们的答案变成了0314,余数为2.至于符号,+和负我们很容易得到结果为-,于是结果为-0314, 2.

至此我们分析了除法大概过程是这样:

从被除数最高为开始,选择一个数,该数满足乘以除数后,他们的积被被除数减后要大于0,既余数必须大于0。且还要满足这个余数必须是大于0的最小数,这个数放到商上。接下来把余数乘以10,既小数点右移移位+上被除数剩下的位,我们要做的是把它做被除数,在继续上一部,的到的数填充到商上,把前面一个数向左移一次位。重复直到所有被除数的位都被处理既完成。

第二步,计算机中对第一步的模拟(真值)

OK,我们在我们思维逻辑中完成了一次除法运算,在计算机的世界里,某些地方会很简单,而某些地方会比我们的复杂。

计算机硬件只有2进制,从而计算机面临的选择不用太费周章,选1或者选0.选择题的答案少了,但做题目的智力变笨了,对于”它“来说这个选择题很难(因为计算机不会做选择,它只能做确定的关系)。计算机是通过编码来完成对正负数的标识,而这种编码则会给我们计算带来麻烦,但同时又给了我们一个方便了,计算机中出现的除法只会是 0.XXX....X(一共N个X) / 0.YYYYY...Y(一共N个Y),其中第一个字符0也可以为1. 确切的说0表示正号,它不表示数字0。而1则表示正号,其中的点表示小数点。至于为什么2者等长,因为处理双方的寄存器一般是等长的。不够就补0,超过就不能标识,也就是处理不了。至于为什么只会出现绝对值小于1的数,我们知道10000 = 0.1 × 10^6,而计算机是采用后者来表示10000的,当然它用的是2进制。所以你只会看到绝对值小于1的数做除法,至于后面10的6次方,在除法中,它会变成减法,这就很容易处理了。

下面我们通过一个具体的例子来看看计算机是如何来模拟上面我们对除法处理的思维过程。比如0.1001/0.1101(注这里是2进制,这个例子也很特殊,首先他们都是正数,所以补码问题不复存在,因为正数补码,原码和反码都是一样的,先从简单的下手),我们用3个寄存器分别存被除数,除数和商(余数怎么办,不用着急),我们还给出0.1101的补码留着备用,它的补码是1.0011.

被除数寄存器             除数寄存器            商            说明

0.1001                    0.1101                               初始化,商寄存器初始化,至于值不用特别指定,但也可以置0,后

面会看到,这是没有必要的,选择题来了,我们该选0还是1呢,这

其实也简单了,明显只要被除数大于除数(这种情况是100%的,

为什么,后面说明)我们就选1,小于我们就选0。自己稍微思考下

就明白了。计算机不能直接判断2个数大小,但我们通过减的方式来

判断,如果差大于0我们就知道大了上1,如果小于0,我们就知道

小了,上0,好先减一次,把结果放到被存数寄存器中(计算机中就

+1.0011                                                            是加补码,这就是我们上面为什么给出除数补码备用)

=======================================================================

1.1100                    0.1101                0              明显符号位是1,是负数小于0,我们商就上1.但我们看到被除数丢

了,其实仔细分析,我们除法分析步骤的过程,我们并不是拿被除

数去除除数,我们是拿余数去除除数的,所以丢了就丢了,这并不

影响。但我们上的商是0,意思就是我们目前的余数并不对。而且

他是负的,明显的不对,那我们要做的是把它变回来,加上我们减

+0.1101                                                             掉的东西就可以了,既除数0.1101

=======================================================================

0.1001                   0.1101                 0              再回忆下,我们要怎样处理0.1001这个余数。小数点右移移位继

续做被除数处理。小数点右移对于计算机来说是不可能的,或者说

是不容易办到的,其实想当与数值的左移,我们左移一次,同时我

们把商也左移,因为接下来的数会填在它后面。左移

1.0010                   0.1101               0                最低位补0很容易理解,最高位的0丢了,怎么办。其实我们就是为

了丢弃它才左移的。从另一个角度看我们已经处理过最高位了,丢

了就丢了,因为我们不会再处理他。继续重复上面步骤

+1.0011

=======================================================================

0.0101                  0.1101                01               这里余数大于0,所以我们上商1.左移,下面就是重复工作了

0.1010                  0.1101              01

+1.0011

=======================================================================

1.1101                  0.1101              010               小于0,上0,同时我们要加上除数

+0.1101

0.1010                  0.1101              010               左移

1.0100                  0.1101             010                减除数

+1.0011

=======================================================================

0.0111                  0.1101             0101             大于0,上1,左移

0.1110                  0.1101           0101               减除数

+1.0011

=======================================================================

0.0001                  0.1101           01011              大于0,上1,结束

结果为0.1011,余数为0.0000 0001(因为你左移了4位,你得移回还原)

结果,大家自行验证一下。

计算56除以四十可以用计算机,CPU如何来计算除法 一相关推荐

  1. 四十年前的 6502 CPU 指令翻译成 JS 代码会是怎样

    去年折腾的一个东西,之前 blog 里也写过,不过那时边琢磨边写,所以比较杂乱,现在简单完整地讲解一下. 前言 当时看到一本虚拟机相关的书,正好又在想 JS 混淆相关的事,无意中冒出个想法:能不能把某 ...

  2. python 计算a除以b_Python中a,b=b,a+b的计算方式

    公众号:布袋书生 在Python中计算的过程为:先计算等号右边两个数的值,然后依次对应赋给等号右边的两个变量,即:同时计算等号右边的b和a+b,然后b的值赋给等号左边的参数a.a+b的值赋给等号左边的 ...

  3. 华为云CPU架构鲲鹏计算ARM服务器架构详解

    华为云服务器CPU架构分为x86和鲲鹏计算,鲲鹏计算的云服务器处理器是基于Arm架构,采用RISC精简指令集(RISC),鲲鹏CPU架构相对于X86 CPU架构具有更加均衡的性能功耗比,云服务器吧来详 ...

  4. IBM推出用于量子计算的CLOPS性能标准;量子基本定理突破绝对零度的适用温度 | 全球量子科技与工业快讯第四十三期

    Qrypt通过云为企业提供量子安全解决方案 Qrypt是一家基于量子熵的加密安全解决方案的生产商,近日宣布推出两个新的解决方案:云企业门户和数字量子密钥分发(Digital QKD).这扩展了Qryp ...

  5. 滕州小学计算机教室,东湖教育四十年|滕州小学--小学校 大世界

    原标题:东湖教育四十年|滕州小学--小学校 大世界 教育是民族振兴的基石,教育公平是社会公平的重要基础.改革开放四十年来,乡村教育发生了巨大变迁:校园环境的改善,办学条件的提升,师资队伍建设的提高,让 ...

  6. PCL点云处理之三维向量夹角计算(四十九)

    PCL点云处理之向量夹角计算(四十九) 一.三维向量的夹角计算? 二.代码 一.三维向量的夹角计算? 向量夹角范围在0到180度,计算向量夹角是必要的,现在提供一个自己写的向量夹角计算函数,省的到处找 ...

  7. 东华理工大学南昌校区学计算机,我校学子在2019年第十四届江西省大学生计算机作品赛斩获佳绩...

    江科网讯(通讯员 徐飞龙)6月1日,由江西省计算技术研究所和江西省计算机学会主办.江西省科学技术厅和江西省科学技术协会支持.东华理工大学承办的2019年第十四届江西省大学生计算机作品赛在东华理工大学南 ...

  8. 用计算机进行计算ppt,苏教版四上周濮玉(用计算器计算)PPT.ppt

    苏教版四上周濮玉(用计算器计算)PPT.ppt (21页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 苏教版四年级数学上册用计算器计算执教 ...

  9. 计算机考研最后四十天,2021考研最后四十天冲刺复习攻略

    2021考研最后这一冲刺阶段,不仅要对以往学过的知识做强化梳理和查缺补漏,还要集中精力做好英语作文.政治等部分的突击学习.因此,在这个紧要的关头,千万不要吝啬你的付出,一定要把每一项复习任务都要落到实 ...

最新文章

  1. Python调用外部程序——os.system()和subprocess.call()
  2. Java高并发编程(七):读写锁、LockSupport、Condition
  3. action 带参数跳转
  4. window下TensorFlow CUDA,CUDNN版本对应关系
  5. 腾讯视频手机app下载安装_腾讯视频怎么签到
  6. julia语言 python解释器_继 Python 解释器移植到 Firefox 后,Mozilla 现在想支持 Julia 和 R...
  7. MVC系列学习(十一)-客户端的验证
  8. 无聊时对连分数的思考
  9. stl之map容器的原理及应用
  10. 15.软件架构设计:大型网站技术架构与业务架构融合之道 --- 技术架构与业务架构的融合
  11. 如何让你的网站每天自动更新
  12. (Nips-2015)空间变换器网络
  13. PHP的数据类型主要有三大类八小类。
  14. Windows 清除DNS缓存C++实现
  15. c语言中calloc是什么意思,C语言中malloc和calloc以及relloc函数的区别
  16. (JZ1162)2018.07.07【2018提高组】模拟B组 1.【NOI2002】贪吃的九头龙
  17. qcc 蓝牙耳机 TWS与TWS plus的区别
  18. 视频转换成图像序列、图像转换成视频(代码)
  19. 基于汇编语言实现的贪吃蛇游戏设计
  20. python读取20万数据Excel文件+拆分数据

热门文章

  1. shiro中基于注解实现的权限认证过程
  2. jQuery+Ajax+PHP无刷新分页
  3. Halcon连接大恒相机
  4. Office 365中Word转成PDF
  5. MySQL(二)查询操作
  6. linux取整个日志文件,高效日志分析 - 人人必学的awk
  7. android tf卡及u盘_android8.1系统修改第三方app无法读写U盘或者内部SD卡的问题
  8. CREATE TABLESPACE语法
  9. 关于c / c++中power_bound的使用
  10. 排序总结(排序算法稳定性、如何选择排序算法以及排序算法常见的坑)