java 判定一个数是否是2的幂次
private static boolean isPowerOfTwo(int val) { return (val & -val) == val; }
分析,比如8,二进制:00001000
-8的二进制表示是其反码+1,反码即8的二进制取反,为:11110111,所以反码+1为:11111000。
8&-8即为
00001000
&
11111000
=
00001000
得到的就是8的二进制。
2的次幂在二进制中,肯定只有一位为1,其余为0.而它的负数表示,也刚好在这一位中为1,所以两个值&得到的刚好是它本身。
如果我的文章对你有帮助,就点一下推荐吧.(*^__^*)

浙公网安备 33010602011771号