一个数 n 是 2 的幂,当且仅当 n 是正整数,并且 n的二进制表示中仅包含 1 个 1
因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 0 即可。下面介绍两种常见的与「二进制表示中最低位」相关的位运算技巧。
第一个技巧是
n & (n - 1)==0即为2的幂;
第二个技巧
n & (-n)==n,即为2的幂;
一个数 n 是 2 的幂,当且仅当 n 是正整数,并且 n的二进制表示中仅包含 1 个 1
因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 0 即可。下面介绍两种常见的与「二进制表示中最低位」相关的位运算技巧。
第一个技巧是
n & (n - 1)==0即为2的幂;
第二个技巧
n & (-n)==n,即为2的幂;