判断是否为2的幂

一个式子:

n > 0 && (n & -n) == n

在C++中,表达式 n > 0 && (n & -n) == n 是用来检查一个整数 n 是否为2的幂。

让我逐步解释这个表达式的含义:

  1. n > 0:首先,这个条件确保 n 是一个正整数,即大于零。
  2. (n & -n):这是一个位操作,使用了按位与(AND)运算符。 -n 表示 n 的二进制补码的相反数。 (n & -n) 的结果是 n 的二进制表示中最右边的 1 所对应的位。这意味着只有当 n 是2的幂时,(n & -n) 的结果才等于 n
  3. (n & -n) == n:最后,这个条件检查 (n & -n) 的结果是否等于 n。如果相等,那么说明 n 是2的幂;否则,n 不是2的幂。

因此,通过这个表达式,我们可以判断一个正整数 n 是否为2的幂。

posted @ 2024-08-20 03:59  2c237c6  阅读(49)  评论(0)    收藏  举报  来源