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;
}
相关推荐
退休倒计时2 分钟前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript
老迟到的茉莉14 分钟前
Hermes 是谁?跟 Claude Code 差在哪
开发语言·python
学逆向的19 分钟前
汇编——内存
开发语言·汇编·算法·网络安全
tachibana224 分钟前
hot100 翻转二叉树(226)
java·数据结构·算法·leetcode
lbb 小魔仙44 分钟前
MuMu 模拟器 6.0 硬核测评:这次升级确实不一样
java·开发语言·模拟器·mumu·硬核测评
r_oo_ki_e_1 小时前
Java 线程池
java·开发语言
生戎马1 小时前
高光谱拼接算法(七)USAC
算法
丁小未2 小时前
基于MVVM框架的XUUI HelloWorld 新手教程
unity·性能优化·c#·游戏引擎
杜子不疼.2 小时前
【Qt初识】信号槽(二):自定义信号函数与槽函数
开发语言·qt
PhotonixBay2 小时前
共聚焦成像核心原理:针孔、PSF与三维形貌测量技术
人工智能·测试工具·算法