首先,自从 80486 开始,CPU 就有了专用的 乘法器/移位器 运算单元,
因此计算乘法并非是在 CPU 内作多次加法!
这就好比笔算十进制 12*23,列竖式的话
. 12
* 23
----
. 36
.24
----
.276
是拆成 12*3=36 和 12*2=24 ,然后将24移位,再相加,得276
这比连加23次12要快得多。
今天的 SSE2/SSE3 FPU 可以让 CPU 在1个时钟周期内计算乘法,
(事实上往往能同时完成两条乘法),但是FPU是做浮点乘法的,
整型乘法还得使用基本的整型乘法器/移位器或 MMX乘法器。
至于楼主发现整型乘法比整型加法还快,可能是编译器自动调用
4个MMX乘法器并行计算乘法,再累加到n上面,
这样虽然整型乘法慢于整型加法,但是4路并行就反而快一些了。