满意答案
jinqun138
2013.05.24
采纳率:42% 等级:12
已帮助:6963人
二进制的除法本质是通过重复减法运算实现
即通过重复”从被除数的高位依次取出每一位, 被取出的数据加上上次的减法结果*2,
然后减去除数”的处理, 求出除法结果
假设:16位除以16位
被除数 R0R1 (占用2字节)
除数 R2R3 (占用2字节)
商 R0R1 (占用2字节) ******************* 这里需要说明, 此程序执行
结束以后, 商的结果保存在被除数中 ************
余数 R4R5 (占用2字节)
移位次数 R6 (占用1字节) ******************* 这里需要说明, 其数值根据
被除数的位数定义, 这里为32 *************
操作流程如下:
a) 余数清零
b) 判断除数是否为0, 如果为0, 是错误, 不再往下执行.
c) 设定移位次数
d) 被除数左移1位, 溢出的最高位保存在进位标志C中, 再把余数左移1位, 把C(被除数溢出的最高位)放入余数的最低位
e) 余数与除数比较大小(余数减去除数):
余数 ≥ 除数(减法结果为正)时, 被除数的最低位, 赋值 1
余数 < 除数(减法结果为负时, 恢复到减法前的余数) 被除数的最低位, 赋值 0
f) 定移位次数递减
g) 直到移位次数为0, 否则重复d) ~ f)
假设32位除以16位