计算机中的二进制除法

计算机中的二进制除法

一.原码除法的规则

原码除法运算规则如下:

  • (1)除数≠0。对于定点纯小数,|被除数|<|除数|,否则商的整数位会被舍弃;对于定点纯整数,|被除数|>|除数|,否则商直接为0。
  • (2)与原码乘法类似,原码除法的商中,符号和数值也是分别处理的。商的符号等于被除数的符号与除数符号的异或,而商的数值等于被除数的数值除以除数的数值。
  • (3)将商的符号与数值拼接在一起即可得到商的原码。

二.恢复余数法

在实际构成除法器时,保持除数的位置不动,使余数每次左移一位,来达到类似手算右移除数的效果,使运算单元的有效位数保持不变。

恢复余数法算法描述(定点纯小数):

  • (1)被除数首先左移一位,减除数,若够减,上商为1,若不够减,上商为0,同时加除数——恢复余数
  • (2)余数左移一位,减除数,若够减,上商为1,若不够减,上商为0,同时加除数——恢复余数。重复此过程,直到除尽或精度达到要求为止。
    在这里插入图片描述

值得注意的是: 在除的过程中,减|Y|是利用补码加法来实现的,所以为了防止补码相加溢出,可见在运算过程中同样设置了双符号位来防止溢出。即当低位符号位被溢出的进位侵占时,高位的符号位仍能保持原来的符号位数值。

恢复余数法的缺点: 在运算位数相同的情况下,不同的被除数和除数在运算中何时需要恢复余数不同,运算时间不一致,实现起来不便控制。

三.加减交替法

为了推导出加减交替的法的原理,首先回顾分析恢复余数法:
在这里插入图片描述
也就是说,若第i次余数减除数得到的余数 R i < 0 R_i<0 Ri<0,则不需要立即加除数来恢复余数,而是将其左移一位,变为 2 R i 2R_i 2Ri,到第i+1次余数运算时加除数,即 R i + 1 = 2 R i + B R_{i+1}=2R_i+B Ri+1=2Ri+B

因此加减交替法的规则可描述如下:

  • (1)若余数R>=0,则商1,余数左移一位,减除数
  • (2)若余数R<0,则商0,余数左移一位,加除数

在这里插入图片描述

值得注意的是:假如计算到最后一步时发现余数R<0,则没有办法左移并进行下一步的加减交替来让i+1次操作加余数。所以此时我们应该采用恢复余数法,让最后的余数加回除数。

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您解答。二进制除法器是计算机硬件常用的电路之一,可以完成除法运算。这里我们需要实现一个8位二进制数除以4位二进制数的除法器。 首先,我们需要确定除法的方法。由于被除数和除数都是二进制数,所以我们可以使用短除法来进行除法运算。具体来说,就是将被除数从左往右依次与除数进行比较,如果被除数大于或等于除数,则将被除数减去除数,并将商的相应位设置为1,否则商的相应位设置为0。 下面是一个简单的Verilog代码实现: ```verilog module div8by4( input [7:0] dividend, input [3:0] divisor, output reg [1:0] quotient, output reg [3:0] remainder ); reg [7:0] r; reg [3:0] d; always @(*) begin r = dividend; d = divisor; quotient = 2'b0; remainder = 4'b0; for (int i = 7; i >= 0; i = i - 1) begin remainder = {remainder[2:0], r[i]}; if (remainder >= d) begin remainder = remainder - d; quotient[i] = 1'b1; end end end endmodule ``` 在这个代码,我们使用了一个always块,用来实现除法器的功能。其,r和d分别代表被除数和除数,quotient和remainder分别代表商和余数。我们从高位到低位依次处理被除数,将余数和当前位组合成一个新的余数,然后判断余数是否大于等于除数。如果是,则将余数减去除数,并将当前位的商设置为1。最终得到的商和余数就是除法的结果。 请注意,这只是一个简单的实现方式,可能存在一些问题,比如除数为0的情况没有考虑。在实际的设计,还需要考虑更多的细节和特殊情况,以确保除法器的正确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值