C语言 输入两个数X,Y(带符号位的四位二进制数)用原码恢复余数除法计算X/Y 定点数除法的代码实现

首先先给大家介绍一下原码除法运算的理论知识

原码除法运算的规则是:

i. QS = XS ⊕YS ,RS = XS,|Q| = |X|÷|Y|-|R|÷|Y|(符号位和数值位分开计算)。

ii. 余数和被除数、除数均采用双符号位;初始余数为|X|。

iii.每次用余数减去|Y|(通过加上[-|Y|]补来实现),若结果的符号位为 0,则够减,上商 1,余数左移一位;若结果的符号位为 1,则不够减,上商 0,先加|Y|恢复余数,然后余数左移一位。

iv. 循环操作步骤 3,共做 n+1 次,最后一次不左移,但若最后一次 上商 0,则必须+|Y|恢复余数;若为定点小数除法,余数则为最后计算得到的余数右移 n 位的值。

注意:部分余数左移时,采用补码移位规则,最低位补0,最高符号位不变,最高有效位移入低符号位,可能临时发生溢出,但接着进行的减法将会使余数恢复正常。

简单来说就是:X/Y就是将X的数值为赋给余数R,一开始商Q为0,余数先+[-|y|]的补码,就相当于减去y,如果不够减 就让商上0,再加上|y|恢复余数,之后将余数R与商Q同步左移一位,若是够减,就让商上

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一瞬间、心凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值