检查数字是否可以被 16 整除

Check if number can be divided by 16

如何仅使用位运算符检查 32 位整数是否为 16 的乘积? 我知道理论是使用 bitshift 向右移动 4 谁能解释为什么以下表达式为真?

boolean b = 16 >> 4 == 17 >> 4;

x & 0x0F 对于可被 16 整除的数字将是 0 (0x10)

bool div16 = (x & 0x0F) == 0;

如果你想用位移来检查这个:首先移出四位,然后移回零

bool div16 = x == (x >> 4) << 4;