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;
}
相关推荐
命运之光14 分钟前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光36 分钟前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人1 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
Forever Nore1 小时前
学完C语言力扣第一题做不来正常吗
数据结构·算法
hansang_IR1 小时前
【题解】LC:倍增 / 区间并查集(Range Parallel Unionfind)
c++·算法·并查集
在世修行2 小时前
从零打造 C# 工业视觉检测系统(七):串口通信 SerialPort 封装与开发
开发语言·c#·modbus rtu·rs232/rs485
Hammer_Hans3 小时前
DFT笔记98
java·开发语言·数据库
Tisfy3 小时前
LeetCode 3731.找出缺失的元素:哈希 / 排序
算法·leetcode·哈希算法·排序·哈希表
lucas_AI3 小时前
Q-CueGraph:你的多模态大模型会 zoom,但真的知道该看哪儿吗?
人工智能·算法
kaixin_啊啊4 小时前
test_机器学习算法学习
学习·算法·机器学习