在大多数机器上,整数除法要比整数乘法更慢——需要30个或者更多的时钟周期。除以 2 的幂也可以用移位运算来实现,只不过用的是右移,而不是左移。无符号和补码数分别使用逻辑移位和算术移位来达到目的。
整数除法总是舍入到零。对于使用算术右移的补码机器, C 表达式
(x < 0 ? (x + (1 << k) - 1) : k) >> k
除以 2 的幂可以通过逻辑右移和算术右移来实现。这也是为什么大多数机器上提供这两种类型的右移。不幸的是,这种方法不能推广到除以任意常数。同乘法不同,不能使用除以 2 的幂的除法来表示除以任意常数 K 的除法。