(一)2 的幂
n & (n - 1) == 0
,这是因为:一定满足 n > 0。
因此可以根据 n > 0 && (n & (n -1) == 0)来判断
(二)4 的幂
因此我们可以构造一个整数 m,它的所有偶数二进制位都是 0,所有奇数二进制位都是 1。
这样一来,我们将 n 和 m 进行按位与运算,如果结果为 0,说明 n二进制表示中的 1 出现在偶数的位置,否则说明其出现在奇数的位置。
m 也可以写成十六进制的0xaaaaaaaa
原文:https://www.cnblogs.com/averyfork/p/14833064.html