判断是否为2的幂
一个式子:
n > 0 && (n & -n) == n
在C++中,表达式 n > 0 && (n & -n) == n
是用来检查一个整数 n
是否为2的幂。
让我逐步解释这个表达式的含义:
n > 0
:首先,这个条件确保n
是一个正整数,即大于零。(n & -n)
:这是一个位操作,使用了按位与(AND)运算符。-n
表示n
的二进制补码的相反数。(n & -n)
的结果是n
的二进制表示中最右边的 1 所对应的位。这意味着只有当n
是2的幂时,(n & -n)
的结果才等于n
。(n & -n) == n
:最后,这个条件检查(n & -n)
的结果是否等于n
。如果相等,那么说明n
是2的幂;否则,n
不是2的幂。
因此,通过这个表达式,我们可以判断一个正整数 n
是否为2的幂。
本文作者:2c237c6
本文链接:https://www.cnblogs.com/27dCnc/p/18568684
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步