Thursday, September 18, 2014

两个数相乘,不能用乘号,怎么做?

问个题,两个数相乘,不能用乘号,怎么做? 把小的那个数转换成二进制,然后就可以多次自加翻倍 比如 a * 11, 11二进制是1011,则等于 a*8 + a*2 + a,每一项都是2的power 具体实现方式: 除了最高位的1以外,从次高位往低位,遇到1就翻倍后加自己,遇到0就只是翻倍 10: a * 2 101: (a * 2) * 2 + a 1011: ((a * 2) * 2 + a) * 2 + a 至于其中秘密,自己画画二进制和十进制的转换,大概就明白了,需要一点数学细胞

No comments:

Post a Comment