查看文章 |
(ZT)C语言用加法代替乘法
2007-11-02 00:14
乘法可以用加法代替的。 下面这段代码计算a*b,将结果保存到ret中(这里假设a,b,ret都是int类型,且a和b都是非负数)。 ret = 0;
(a & (1<<0))?(ret += (b<<0)):(0); (a & (1<<1))?(ret += (b<<1)):(0); (a & (1<<2))?(ret += (b<<2)):(0); (a & (1<<3))?(ret += (b<<3)):(0); (a & (1<<4))?(ret += (b<<4)):(0); (a & (1<<5))?(ret += (b<<5)):(0); (a & (1<<6))?(ret += (b<<6)):(0); /* 继续往后写…… */
-----------------------------------------------------------转贴结束--------------------------------------------------------- 算法理解:挺好玩的算法,原理是把一个数用集合M {x| x是2的自然数次方}中的数表示 |
最近读者: