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,所以两个值&得到的刚好是它本身。
如果我的文章对你有帮助,就点一下推荐吧.(*^__^*)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步