C#面:现有一个整数number,请写一个方法判断这个整数是否是2的N次方

要判断一个整数是否是2的N次方,可以使用位运算来实现。一个整数如果是2的N次方,那么它的二进制表示中只有一位是1,其余位都是0。可以通过将这个整数与它减去1的结果进行按位与运算,如果结果为0,则说明这个整数是2的N次方。

以下是一个示例代码:

cs 复制代码
public bool IsPowerOfTwo(int number)
{
    if (number <= 0)
    {
        return false;
    }
    
    return (number & (number - 1)) == 0;
}

解释:

首先判断输入的整数是否小于等于0,如果是,则直接返回false,因为负数和0都不是2的N次方。

然后使用位运算将输入的整数与它减去1的结果进行按位与运算,如果结果为0,则说明这个整数是2的N次方,返回true;否则返回false。

取模,⽤num % 2 == 0 可以判断。

位运算逻辑并,运算的逻辑是通过⼆进制,都是 1 时才为 1,其余都 0,然后结果是否等于 0,代码如下

cs 复制代码
bool IsPower(int num)
{
int result = num & 2;
return result == 0;
}
相关推荐
面汤放盐4 分钟前
企业权限--系统性方案探究
java·开发语言
wen__xvn5 分钟前
代码随想录算法训练营DAY27第八章 贪心算法 part01
算法·贪心算法
悟能不能悟10 分钟前
java Date转换为string
java·开发语言
菜宾18 分钟前
java-redis面试题
java·开发语言·redis
We་ct18 分钟前
LeetCode 125. 验证回文串:双指针解法全解析与优化
前端·算法·leetcode·typescript
客卿12321 分钟前
力扣20-有效括号(多家面试题)
算法·leetcode·职场和发展
木井巳33 分钟前
【递归算法】快速幂解决 pow(x,n)
java·算法·leetcode·深度优先
程序员_大白44 分钟前
区块链部署与运维,零基础入门到精通,收藏这篇就够了
运维·c语言·开发语言·区块链
qq_229058011 小时前
python-Dgango项目收集静态文件、构建前端、安装依赖
开发语言·python
测试人社区—66791 小时前
2025区块链分层防御指南:AI驱动的安全测试实战策略
开发语言·驱动开发·python·appium·pytest