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;
}
相关推荐
charlie1145141912 分钟前
Cinux: 为大内核铺路
开发语言·c++·操作系统·现代c++
2501_914245934 分钟前
C语言设计模式详解:从理论到实践的完整指南
c语言·开发语言·设计模式
Hazenix36 分钟前
Go 指南:一篇文章速通 Golang
开发语言·后端·golang
灯澜忆梦39 分钟前
GO_复合类型---指针
开发语言·后端·golang
Ulyanov43 分钟前
雷达导引头Python仿真框架:GPU加速、6-DOF模型与半实物仿真接口
开发语言·python·雷达信号处理·雷达导引头
Jerry1 小时前
LeetCode 101. 对称二叉树
算法
名字还没想好☜2 小时前
Go slice 的 append 陷阱:共享底层数组导致的数据串改
开发语言·后端·golang·go·slice
bitbrowser2 小时前
Claude 账号频繁被封?转向国内可直接使用的 AI 工具
开发语言·php
可编程芯片开发2 小时前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
An_s2 小时前
机器学习python之识别图中物品信息
java·linux·开发语言