二进制乘法,除法

1.乘法

由于计算机中,所有数值都是用2的N次方来表示的:2^n0+2^n1+2^n2+2^n3+2^n4…..

因此xy,(x)(2^n0+2^n1+2^n2+2^n3+2^n4)=(x2^n0)+(x2^n1)+(x2^n2)+(x2^n3)+(x*2^n4)+……即(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+……

用15(x)13(y)来举例,1513 为1111*1101

a.首先y的最低位为1(2^0),x左移0位得到1111

b.然后y的最低第二位为0,没有2^1存在,因此本次无运算(结果可以看作为0)

c.然后y的最低第三位为1(2^2),x左移2位得到111100

d.然后y的最低第四位为1(2^3),x左移3位得到1111000

e.把a、b、c、d的结果相加1111+0+111100+1111000=11000011(195),该结果就是乘法的结果

2.除法(加减交替法)

x/y其实就是,x不断减y的过程。小学时候学的长长除法就是这个原理。

用二进制的除法x/y,比十进制容易写,商不是0即是1,而且如果除数大于除数的1倍,商就是标记在另一个位上面了

用85/6来举例,85/6=1010101/110

a.101(0101)左移1位到第3位都小于110,因此商=000

b.1010(101)左移四位是1010,比110大,商=0001,余数=1010-110=100(101)

c.余数100(101)左移一位是1001,比110大,商=00011,余数=1001-110=11(01)

d.余数11(01)左移一位是110,等于110,商=000111,余数=0(1)

e.余数0(1)左移一位是01,小于110,商=0001110,余数=01

因此85/6=1010101/110=0001110,即14,余数为最后的余数1

计算机乘法除法原理(原码)