如果除法中的除数是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的除法需要更多的时间执行。
|