2<<3,
把8看作2的3次方,int x = 2*2的3次; x=2<<3; 位运算的方式做运算是最快的。
我来说一下为什么? 其实我也是在网上查了下资料,觉得解释还行就搬运过来了。
位移运算调的是 ishl (将 int 型数值左移位指定位数并将结果压入栈顶)指令,乘法运算调的是 imul (将栈顶两 int 型数值相乘并将结果压入栈顶)指令。
整数乘法或整数除法所需要的时钟周期远远大于移位操作所需的时钟周期,下面列出这个指令的基本执行时间:
移位指令 寄存器移 1 位 时钟周期数为 2
整数乘法 IMUL 16 位寄存器乘 时钟周期为 128 ~ 154
整数除法 IDIV 16 位寄存器 时钟周期为 165 ~ 184
|