chr*_*tek 2 algorithm bit-manipulation bitwise-operators
可能重复:
按位并代替模数运算符
有人可以解释使两个表达式等价的理由吗?我知道它只能起作用,因为64是2的幂,但我怎么能在逻辑上或数学上从分区到按位呢?
x % 64当x除以64时,操作返回余数,其中(假设x> 0)必须是介于0和63之间的数字.让我们以二进制形式查看:
63 dec = 0011 1111 b
64 dec = 0100 0000 b
您可以看到任何64的倍数的二进制表示必须以6个零结尾.因此,将任何数字除以64时的余数是原始数字,除了最右边的6个位之外,所有位都被删除.
如果使用63的数字的按位AND,结果恰好是那6位.