除法运算就是移位和相减
来源:互联网 发布:数据库课程设计源代码 编辑:程序博客网 时间:2024/05/29 11:56
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的最高位了。
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的最高位了。
0 0
- 除法运算就是移位和相减
- 除法运算就是移位和相减
- 用移位和加减运算实现无符号整数除法
- 使用移位运算和加减法实现乘除法
- 用+,-,移位实现除法运算
- 用+,-,移位实现除法运算
- 移位运算与除法、取模运算
- C/C++ 移位运算代替乘除法
- C/C++用移位实现除法运算
- 移位运算为什么比乘法除法快
- 移位运算符"<<"和">>"
- 位运算和移位运算
- 位运算和移位运算
- 利用移位和减法的除法算法
- 除法和乘法的移位处理
- 移位,逻辑运算实现加法,乘法和除法
- C/C++中移位实现乘除法运算
- C/C++中移位实现乘除法运算
- MySQL更新时Error Code:1093和Error Code:1175的解决办法
- 工作注意事项
- Java Vector遍历的五种方法
- 南邮 OJ 1593 8皇后问题
- =============什么是刷新缓冲区???
- 除法运算就是移位和相减
- PA的cannot simultaneously fetch multiple bags异常的解决
- hdu3549 Flow Problem(最大流)
- 高通:中国是未来5G发展关键---OFweek
- 查找计算机视觉、模式识别、图像处理领域的国际会议和会议排名
- 关于类的生命周期
- EditPlus对多行进行列处理
- 南邮 OJ 1595 确定进制
- 移动WebApp开发 JS框架对比