You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP不使用log10判断2的幂 位运算判断逻辑原理解析

PHP判断正整数是否为2的幂的代码逻辑疑问

我是PHP新手,在参加编程挑战时遇到了如下代码片段:

// 用于判断给定的正整数是否为2的幂

解决方案代码如下:

function is_Power_of_two($n)
{
   if(($n & ($n - 1)) == 0)
    {
        return "$n 是2的幂";
    }
   else
    {
        return "$n 不是2的幂";
    }
}
print_r(is_Power_of_two(4)."\n");
print_r(is_Power_of_two(128)."\n");
print_r(is_Power_of_two(16)."\n");

我想知道上述代码if判断段的逻辑是怎样的?比如当$n=2时:

2 & 2 - 1 == 0 // 用数值替换$n
2 & 1 == 0 ? // 这一判断的结果是什么?

补充说明

我后续了解到,&并不是逻辑运算符,而是位运算符。

位运算符可用于对整数中指定的二进制位进行计算和操作。

我找到了一个非常实用的视频,讲解了位的运行逻辑以及位运算的使用方法。
感谢kollol的帮助,现在我已经理解了这段代码为什么可以正确识别2的幂数值。同时也感谢lars-stegelitz、kiko-software的解答。

内容的提问来源于stack exchange,提问作者winpriv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:54:02