(x%64)==(x&63)背后的基本原理是什么?

chr*_*tek 2 algorithm bit-manipulation bitwise-operators

可能重复:
按位并代替模数运算符

有人可以解释使两个表达式等价的理由吗?我知道它只能起作用,因为64是2的幂,但我怎么能在逻辑上或数学上从分区到按位呢?

Ada*_*iss 8

x % 64x除以64时,操作返回余数,其中(假设x> 0)必须是介于0和63之间的数字.让我们以二进制形式查看:

63 dec = 0011 1111 b
64 dec = 0100 0000 b

您可以看到任何64的倍数的二进制表示必须以6个零结尾.因此,将任何数字除以64时的余数是原始数字,除了最右边的6个位之外,所有位都被删除.

如果使用63的数字的按位AND,结果恰好是那6位.