一.乘法
1 .计算公式: x*y (但y=2^n0 2^n1 2^n2 2^n3 2^n4 ) )
于是,x*y=(x ) * )2^n12^n22 ) n32^n4……() ) x*2^n0 ) ) x*2^n1 ) ) x*2^n2 )……
即(x左移0位) x左移1位) x左移2位) x左移3位……。
2.15(x ) 13 (y )为例,15 ) 13=1111 ) 1101
如果野灯泡的底部为1(2^0),则x向左移动0,得到1111
b.y的第二个低位为0,所以这次的运算结果被视为0
如果c.y的第三个低位为1(2),则x向左移动2位得到111100
如果d.y的第四个低位为1(2^3),则x向左移动三位,得到1111000
将e.a、b、c、d的结果相加,即得到该公式的乘法结果。
15 * 13=1111 * 1101=111101110011000=1100011
3 .用小程序模拟计算机乘法
# includeiostreamusingnamespacestd; intmulti(inta,int b ) {int tmp=0; if(ab ) {tmp=a; a=b; b=tmp; tmp=0; }while(b ) (if ) b0x1) ) {tmp=a; }a=1; b=1; //coutaendl; //coutbendl; }返回tmp; (}int main ) ) {int a,b; while(cinab ) coutmulti(a,b ) endl; 返回1; (二、除法
x/y实际上是x减少y的过程。 小学生时学的长除法就是这个原理。
二进制除法x/y比十进制更容易写,如果商不是0则为1。 此外,如果除数大于被除数的1倍,则商被标记为另一位
以85/6打个比方,85/6=1010101/110
a.101(0101 )从左1位移动到第3位也不到110,所以商=000
b .向左移动4位的是1010,大于110,商=0001,馀数=1010-110=100(101 ) )。
c .馀数100(101 )左一位为1001,大于110,商=00011,馀数=1001-110=11(01 ) ) )。
d .馀数11(01 )左移1位时110为110,商=000111,馀数=0(1) ) )。
e .余0(1)左移1位小于01、110,商=0001110,余=01
因此,85/6=1010101/110=0001110,即14,jldhlb最后的馀数1