我发现,你可以用这个来模数:
x % m == (x + x / m) & m
但我无法理解为什么会这样......
喜欢8%7 ==(8 + 8/7)& 7,这是
x = 8 = 0001 0000
x / 7 = 1 = 1000 0000
x + x / 7 = 9 = 1001 0000
9 & 7 = 1001 0000 & 1110 0000 = 1000 0000 = 1
答案 0 :(得分:4)
N = 7k + m, m<7
N/7 = k
N + N/7 = 8k + m
(N + N/7) & 7 = (8k + m) & 7
= m & 7
= m
适用于任何2 n -1的数字,而不仅仅是7。