主题
如何用一个表达式判断某个大于 0 的 int 类型的数是不是 2 的幂?
int
正的 2 的幂在二进制表示中只有一个比特位是 1。将它减 1 后,原来那一位以下的比特位都会变成 1;二者按位与的结果为 0。
x > 0 && (x & (x - 1)) == 0
题目已经给出 x 大于 0 时,也可以只写:
x
(x & (x - 1)) == 0