规划阿里巴巴网站怎么做,三亚做网站多少钱一平方,深圳市文刀网站建设,网站建设云梦目录
一.原码的除法
#xff08;1#xff09;恢复余数法
重点看这
#xff08;2#xff09;不恢复余数法#xff08;加减交替法#xff09;
重点看这
二. 补码除法运算
重点看这 我们已经学习了如何进行原码#xff0c;补码的乘法#xff1a;
http://t.csdnimg…目录
一.原码的除法
1恢复余数法
重点看这
2不恢复余数法加减交替法
重点看这
二. 补码除法运算
重点看这 我们已经学习了如何进行原码补码的乘法
http://t.csdnimg.cn/GjkIn
现在以同样的思路学习除法运算:
一.原码的除法
对于手算的10进制除法我们是这样计算的 为什么这样计算呢我们来看一下 第一步得到的余数为0.2110,我们需要拼凑上小于等于这个数且最接近这个数的值即 0.985*0.20.1970接下来继续以这个规则拼凑 0.985*0.010.00985 0.985*0.0040.00394 最后得到商就是0.214 那么同理2进制的手算除法 计算机如何实现除法 运算器结构如下 ACC:累加器用于存放操作数或运算结果MQ:乘商寄存器在乘、除运算时用于存放操作数或运算结果X:通用的操作数寄存器用于存放操作数 ALU:算术逻辑单元通过内部复杂的电路实现算数运算、逻辑运算 ACC用于存储被除数、余数MQ用于存储商X用于存储除数。 1恢复余数法
实现方法上商0/1得到余数余数末尾补0 符号位单独处理符号位 数值位取绝对值进行除法计算 设机器字长为5位(含1位符号位n4)X0.1011y0.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|]补--ACC010111001111110 这里相减的结果是负数所以说明被除数比除数更小所以应该上商0计算机检测到符号位为1所以将MQ上商0 2.因为商0而不是商1所以保存在ACC中的数值是错误的也就是说 不应该为(ACC)[-[y]]补--ACC而是ACC-0--ACC,为了恢复原来的数我们再加上[|y|]补就是 ACC[|y|]补---ACC 111100110101011 恢复原来的ACC值并且上商0 3.将ACC与MQ的数统一进行逻辑左移MQ的最高位会移动到ACC的最低位原本的ACC最高位被丢弃低位补0 4.同理右移后MQ还是会默认上商1ACC-除数---ACC ACC[-|y|]补---ACC 101101001101001 此时计算机识别当前符号位为正那么这一步商1是对的 不需要恢复余数直接进行左移 同理如此重复可以得到5位商0.1101 而最终得到的余数需要在0.0111的基础上*(这里的n就是数值位的个数在这里就是4) 这一步注意最后一步上商1若余数为负也就是红色字体为1那么也需要进行恢复余数并商0 5.最后符号位000 重点看这
以上是恢复余数法的所有过程 1.默认商1[-|y|]补 2.余数为负改为商0并恢复余数[|y|]补再进行左移 3.余数为正直接商1不用恢复余数直接左移 4.最后的商位数为n1数值位符号位即上商n1次左移n次最后一次上商不左移 注最后一步上商1若余数为负也就是红色字体为1那么也需要进行恢复余数并商0 5.异或判断符号位的正负 2不恢复余数法加减交替法
我们可以观察恢复余数这几部当发现余数为负时需要加上[|y|]补恢复余数在进行左移减去余数[-|y|]补,才能得到下一步的商根据算式就是将a---2ab的过程也就是将余数左移一位2a除数的绝对值b 所以得到不恢复余数法
重点看这 1.默认商1 2.若余数为负则可直接商0让余数左移1位再加上|除数|[|y|]补,得到下一个新余数 3.若余数为正则商1让余数左移1位再减去|除数| ([-|y|]补)得到下一个新余数 4.最后的商位数为n1数值位符号位 注加/减n1次每次加减确定一位商;左移n次(最后一次加减完不移位) 最终可能还要再多一次加,这需要看余数的正负下面有讲所以加/减可能是n1次n2次 5.异或判断符号位的正负 注余数的正负性与商相同若最后一步得到的余数是一个负值需商0并且[|y|]补得到正确的余数 注这一篇讲的是定点小数的除法运算被除数一定要小于除数若被除数大于除数最后商会为1.几而定点小数无法表示大于1的范围那么机器就是通过第一步得到的商判断的 第一步被除数-除数一定为负商要从默认的1改为0若第一步的商不为0那么就会直接停止除法运算 二. 补码除法运算
补码的除法运算与原码的除法运算中的加减交替法有很多相似
原码中的加减交替法与补码的除法运算的区别
1.补码除法中符号位会参与运算
2.被除数/余数除数都会采用双符号位
3.这里的除数不是原码中的|除数|的补码而是除数的补码因为符号位也会参与运算
4.在原码加减交替法中第一步一定是-|除数|而在补码的加减交替法中是根据被除数与除数是否同号来判断[y]补或[-y]补 第一步 被除数和除数同号则被除数减去除数; 异号则被除数加上除数。 接下来的每一步 余数和除数同号商1余数左移一位减去除数; 余数和除数异号商0余数左移一位加上除数。 重复n次 设机器字长为5位(含1位符号位n4)x0.1000y-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.最后商位数为n1(数值位符号位)加/减次数n1左移次数为n 3.末位恒置1 总结
原码加减交替法与补码加减交替法的区别