计算器原理层面,取模操作不是一个基本的指令,而是由多个指令组合而成,所以性能会比较低。
Java的lang包的Math.floorMod(x, y)方法中,取模运算是通过除法运算、乘法运算和减法运算组合而成的。
public static int floorMod(int x, int y) {
int r = x - floorDiv(x, y) * y;
return r;
}
public static int floorDiv(int x, int y) {
int r = x / y;
// if the signs are different and modulo not zero, round down
if ((x ^ y) < 0 && (r * y != x)) {
r--;
}
return r;
}
以上观点,纯属个人理解!