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;
}
相关推荐
Ada's12 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
2601_9628857213 小时前
如何用 Python 计算 TRIX 三重指数平滑均线指标?
开发语言·python
还卿一钵无情泪13 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
Nil20813 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
倔强的石头10615 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
传人once15 小时前
页面中心圆圈放大效果如何写
开发语言·javascript·ecmascript
NeilYuen15 小时前
【C++】STL源码仿写(二):vector
开发语言·c++
蜗牛互联网15 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
wanderist.16 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.16 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode