评估整数是否为 POT(二的幂)

发布于 2024-10-20 04:20:58 字数 564 浏览 1 评论 0原文

可能的重复:
有关计算 number 是否为 的幂的查询2
如何检查一个数字是否是 的幂2

我需要这个原型的函数体:

bool isPOT(int x);

所以它会返回例如 isPOT(3) = FALSE, but isPOT(8) = TRUE

什么是最漂亮/简洁的算法?什么是最有效的?

PS:我很惊讶我在 SO 上找不到这个问题,所以我完全期待有人检测到一些重复的问题。

PPS:有人可以创建 POT、NPOT、二次幂标签吗?

Possible Duplicates:
Query about working out whether number is a power of 2
How to check if a number is a power of 2

I require a function body for this prototype:

bool isPOT(int x);

So it would return eg isPOT(3) = FALSE, but isPOT(8) = TRUE

What is the most pretty/concise algorithm? And what is the most efficient?

PS: I am amazed that I cannot find this question on SO, so I am fully expecting someone to detect some duplicate.

PPS: can someone please create POT, NPOT, Power-Of-Two tags?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

再可℃爱ぅ一点好了 2024-10-27 04:20:58
bool IsPOT(int x)
{
    return (x > 0) && ((x & (x - 1)) == 0);
}
bool IsPOT(int x)
{
    return (x > 0) && ((x & (x - 1)) == 0);
}
城歌 2024-10-27 04:20:58

不确定是否发生了这个确切问题,但检查很容易

x & (x - 1) == 0

Not sure if this exact question occurred, but the check is easy

x & (x - 1) == 0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文