如何通过利用加、减、移位等方式实现单片机中乘法和除法的运算! 中国电子开发网(www.ou...
乘法比较简单。
最简单的方法就是模拟笔算乘法的过程:
1101 A
* 1011 B
---------
1101
1101
0000
1101
---------
10001111
具体过程:1、累加器清零;2、由乘数B的末位确定是否把A加到累加器中;3、A左移1位、B右移1位;4、重复1。
改进一下:乘数B右移的时候空出的高位,可以利用来存放结果的低位,即移位的时候,A不需要移动,而是把累加结果右移1位,移出的部分进入乘数B的空位中,这样最终结果的高位放在累加器中,低位放在B中。这样做的好处是,A、B、累加器的位数一样,容易在计算机体系中运算。
除法一般不好优化,直接按照笔算步骤来算就可以了:
1、根据被除数(余数)和除数的大小来上商;
2、被除数(余数)低位补0,再减去右移后的除数,也可以改为左移余数,减去除数,这样可以确保参与运算的寄存器具有相同的位数;
3、商写到寄存器的最低位,然后商左移1位。
连续做减法,现在公认的就是这个,让被除数连续减去n个除数,直到差小于除数时为止,这样减去的次数就是商,剩下的差就是余数。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。