本帖最后由 VioletTec 于 2021-4-5 08:34 编辑
上次实现了一个不带余数的整除运算(https://blog.mcplugin.cn/p/609),这次来个带余数的除法运算。
已知BUG:被除数不得与除数相等(如:1/1 ; 2/2 ; 3/3等);
整数除法最后的商会比正确的商小1,但余数会等于除数
(如:8/4 == 1······4);
思路
这次和上次一样,仍无具体的电子版草稿,只有纸质草稿。
大体思路为:使用乘法猜商,每猜一次,猜的商都与被除数做差,得到余数,再将余数与除数比较大小,若于数大于除数,则继续猜商;若余数小于除数,则输出。
用法
起始指针、参数、返回值、最终指针与运算损耗:
- 起始指针:
- 参数:
- 返回值:
- i2:存放i0与i1相除后的商
- i3:存放i0与i1相除后的余数
- 运算损耗位:
- i0、i1、i2、i3、i4、i5、i6、i7、i8、i9、i10、i11、i12
- 最终指针:
代码
,>,[[->>>+>+<<<<]>>>>[-<<<<+>>>>]<<<+
[->+>>+<<<]>>>[-<<<+>>>]<<[->>>+<<<]>
[->>[->+<<+>]>[-<+>]<<<]>>[-]<<<<<<
[->>>>>>+>+<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>]
<<[->-<]>[->+>+<<]>>[-<<+>>]<<<<<<<[->>>+>+<<<<]
>>>[-<<<+>>>]>
# ↓对i5 i6比较大小
[->-<[->>>+>>+<<<<<]>[->>>+>>+<<<<<]>>>>
[-<<<<<+>>>>>]>[-<<<<<+>>>>>]<<<>[->+<]<
[[-]>+<]>>[[-]>+<]><<[-<+>]>>[-<<+>>]<<<
[[->[->[-]+<]<]]>[-]>>+<[->-<]>[[-]<<<<<<
[-]>>>>>>]<<<<<<]
# ↑对i5 i6比较大小
>[[-]>>+<<]>>>+<[->-<]>[[-]<<<+>>>]
<<<[[-]>[-<<<<+>>>>]<<<<<<[-]>>>>>]>[-]<<<<<<]
截图
!([img]https://pic.rmb.bdstatic.com/bjh/22b119a4927997b2a91fbeec9cc316c4.png)
计算5÷2的结果——商2余1
|