以12 * 9为例
第一个数(12)乘2,第二个数(9)除以2
如果第二个数为偶数,则继续;
如果第二个数为奇数,需要保留第二个数乘2的结果;
直到第二个数等于0,累加前面保留的第一个数
12 9(保留)
24 4(舍掉)
48 2(舍掉)
96 1(保留)
192 0(舍掉)
所以最后结果 12 + 96 = 108(= 12 * 9)
原理,利用位运算,一个数乘2,另一个数除以2,不难理解,
但是被除数为奇数时,就会舍掉一部分,所以需要保留被舍掉的那部分,
即当被除数为奇数时,保留乘2的那个数,最后累加即可.