汇编:除法运算思路->移位相减

除法运算就是移位和相减2进制完成除法运算就是移位和相减,⽐如1011011除以1110顺序如下:

1   -   1110   不够减,   结果添0,   1左移⼀位再加上原来1后的0,为10 。

10   -   1110   不够减,   结果添0,   10左移⼀位再加上原来10后的1,为101 。

101   -   1110   不够减,   结果添0,   101左移⼀位再加上原来101后的1,为1011 。

1011   -   1110   不够减,   结果添0,   1011左移⼀位再加上原来1011后的0,为10110 。

10110   -   1110   =   1000     结果添1,同上左移加原来10110后的1得   10001 。

10001   -   1110   =   11         结果添1,同上左移加原来101101后的1得   111 。

111   -   1101   不够减,结果添0,此时1011011所有位都已移完,运算完毕 。

即   1011011   =   1110   *   0000110   +   111 。

也即   91   =   14   *   6   +   7  。

由于你相除的两个数放在两个数组中,⽐如A[]与B[],要模拟这种运算的话就需要能不断地从A中取出其⼆进制的⾼位,添加到⼀个当前值的数组C[]中,⽽实际进⾏运算的就是C与B。数组单元的类型必然是多位的,你必须要实现做到对数组C[]左移⼀位的操作,剩下的就是判断C够不够减B(即C数组的数是不是⽐B⼤)了。

⾄于左移,我想⼤家都想到了,其实C和B是倒序存放的,以数组单元为8位为例,

C[0]存放着C的最低8位,⽤表达式表⽰就是  

C[0]   =   C   &   0xff,   C[1]   =   C   &   0xff00,   ...

这样当移位时,只要保留当前单元C[i]的最⾼位,即

h   =   C[i]   > >   7,然后直接对C[i]左移⼀位即  

C[i] < <1,

然后再加上上⼀单元C[i-1]保留的最⾼位即得到当前的C[i]

对于C[0]来说,

它的上⼀单元的最⾼位⾃然就是A的最⾼位了。
——————————————————————
来自百度文库VIP复制全文特权
完整内容请点击:https://wxaurl.cn/XVf0sr4Q8ho
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值