【学习计算机组成原理】补码的除运算 您所在的位置:网站首页 二进制数的除法原理 【学习计算机组成原理】补码的除运算

【学习计算机组成原理】补码的除运算

2024-07-09 13:14| 来源: 网络整理| 查看: 265

文章目录 恢复余数法不恢复余数法 前导(如果你不了解原码除法,建议阅读,之后再看补码除法,更容易理解)

恢复余数法

补码的除法和无符号数除法的过程类似,但又有些许不同。

补码运算需要符号位和数值位一起参与运算。中间余数是否够减除数,不看新中间余数(中间余数减除数的结果)的符号位,看的是新中间余数与原中间余数的符号位是否一致,一致表示够减,不一致表示不够减。不像无符号数每次中间余数减除数。看的是被除数或中间余数与除数的符号,同号做减法,异号做加法如果除数和被除数同号,商的符号应该是正;如果除数和被除数异号,商的符号应该是负。如果商的符号错了,则需要对商进行求补(各位取反,末尾加一)。

根据上面的话画一个表就是:

中间余数的符号除数的符号新中间余数的符号是否够减运算000够减001不够减010够加011不够加100不够加101够加110不够减111够减

实现步骤:

除数装入除数寄存器Y,被除数经符号扩展后装入余数寄存器R和商寄存器QR和Q同时左移一位若R与Y同号,则R=R-Y。否则,R=R+Y。 若R=0或R操作前后符号未变,表示够减,上商为1。若R操作前后符号变了,表示不够减,上商为0。恢复余数R值。 重复操作2,3直至取得n位商。若商符号正确,则Q中的就是商。否则,对Q中的值求补才是正真的商。R中的就是余数。

举个例子: -7/4=? -7的补码是1001 4的补码是0100,4的变补码是1100

余数R商Q说明11111001此值是被除数,作为中间余数的初始值11110010将上面的数左移(1次)01000000此值是除数00110010由于上面两数异号,所以相加,得到的结果在左边11000000新中间余数(0011)和原中间余数(1111)的符号位不同,不够减,上商为0,然后加1100恢复余数11110010此值是恢复余数之后的值11100100将上面的数左移(2次)01000000此值是除数00100100由于上面两数异号,所以相加,得到的结果在左边11000000新中间余数(0010)和原中间余数(1110)的符号位不同,不够减,上商为0,然后加1100恢复余数11100100此值是恢复余数之后的值11001000将上面的数左移(3次)01000000此值是除数00001000由于上面两数异号,所以相加,得到的结果在左边11000000新中间余数(0000)和原中间余数(1100)的符号位不同,不够减,上商为0,然后加1100恢复余数11001000此值是恢复余数之后的值10010000将上面的数左移(4次)01000000此值是除数11010000由于上面两数异号,所以相加,得到的结果在左边11010001新中间余数(1101)和原中间余数(1001)的符号相同,够减,上商为1,且不用恢复余数。循环了4次,求得商

由于除数和被除数的符号相异,所以商的符号应为负,但这里0001的符号是正,需要对0001求补,得到1111。 商1111对应的值是-1,余数1101对应的值是-3。

不恢复余数法

实现步骤:

除数装入除数寄存器Y,被除数经符号扩展后装入余数寄存器R和商寄存器Q求第一位商,若R与Y同号,则R=R-Y。否则,R=R+Y。 若新的R与Y同号,则上商为1若新的R与Y异号,则上商为0第一位商用来判断是否溢出,不是正真的商。X与Y同号时上商为1或异号时上商为0都是溢出。 循环n次 若R与Y同号,则上商为1。 R = 2 × R − [ Y ] 补 R=2\times R-[Y]_{补} R=2×R−[Y]补​若R与Y异号,则上商为0。 R = 2 × R + [ Y ] 补 R=2\times R+[Y]_{补} R=2×R+[Y]补​ 将Q寄存器左移,此时最高位移出。商的修正:被除数与除数同号,Q中就是正真的商。否则将Q的值加1才是正真的商余数的修正:余数符号与被除数同号,R中就是正真的余数。否则: 被除数与除数符号相同,R的值加除数才是正真的余数。被除数与除数符号不同,R的值减除数才是正真的余数。

注:每次上商都在左移之后(R乘2就是左移)

例如,求-5/2的值? -5的补码是1011 2的补码是0010,2的变补码是1110。

余数R商Q说明11111011此值是被除数,作为中间余数的初始值00100000上面的值与除数异号,所以加0010(+Y)00011011此值是上面两值的和00110111因为R的符号(0001)与Y(0010)相同,所以左移时上商为1。(第一位商)11100000上面的值与除数同号,所以加1110(-Y)00010111此值是上面两值的和00101111因为R的符号(0001)与Y(0010)相同,所以左移时上商为111100000上面的值与除数同号,所以加1110(-Y)00001111此值是上面两值的和00011111因为R的符号(0000)与Y(0010)相同,所以左移时上商为111100000上面的值与除数同号,所以加1110(-Y)11111111此值是上面两值的和11111110因为R的符号(1111)与Y(0010)相异,所以左移时上商为000100000上面的值与除数异号,所以加0010(+Y)00011110此值是上面两值的和00011101因为R的符号(0000)与Y(0010)相同,只将Q寄存器左移,上商为1(将第一位商1移出)

因为被除数与除数异号,所以Q的值加一1110才是正真的商,对应的十进制值是-2。 因为余数符号与被除数异号且被除数与除数符号不同,所以R的值0001加1110才是正真的余数,1111对应的十进制是-1。

判断是否同号与恢复余数法不同,不是新老余数之间,而是余数和除数之间



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有