检查号码是否可以除以16

时间:2016-03-18 15:10:43

标签: bit-shift modulo

如何使用位运算符检查32位整数是否是16的乘法? 我知道理论是使用bithift到4,任何人都可以解释为什么跟随表达式是真的吗?

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

1 个答案:

答案 0 :(得分:1)

对于可分割为16(x & 0x0F

的数字,

0将为0x10

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

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

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