如果除法中的除数是2的幂次,我们可以更好的优化除法。
编译器使用移位操作来执行除法。因此,我们需要尽可能的设置除数为2的幂次(例如64而不是66)。
并且依然记住,无符号unsigned整数除法执行效率高于有符号signed整形出发。
- typedef unsigned int uint;
- uint div32u (uint a)
- {
- return a / 32;
- }
- int div32s (int a)
- {
- return a / 32;
- }
上面两种除法都避免直接调用除法函数,并且无符号unsigned的除法使用更少的计算机指令。
由于需要移位到0和负数,有符号signed的除法需要更多的时间执行。
|