c#面试基础语法——现有⼀个整数number,请写⼀个⽅法判断这个整数是否是2的N次⽅

1.number%2==0

取余(取模)只能判断number是不是2的倍数但不一定是2的N次方,如:6%2==0但是他并不是2的N次方

2.(number&(number-1))==0

原理:如果number是2的N次方则表示2进制位只有一位是1。如:2 (10) 4(100) 8(1000) 16(10000) 那么number-1就会得到一个低位全部是1的2进制数 1(01) 3(011)

拿8做例子

8  1000

7  0111

&  0000

结果就是0   

当一个整数是2的N次方时,它的二进制表示只有一位是1,其余位都是0。例如,2的3次方是8,其二进制表示为00001000;2的4次方是16,其二进制表示为00010000

如果我们将一个2的N次方的整数减去1,会得到一个所有低位都是1的数。例如,对于2的3次方的整数8,减去1得到7,其二进制表示为00000111;对于2的4次方的整数16,减去1得到15,其二进制表示为00001111

当我们对这两个数进行按位与操作 (number & (number - 1)),如果结果等于0,则表示只有一位是1,也就是指定的整数是2的N次方。

举个例子,假设我们要判断整数12是否是2的N次方。其二进制表示为00001100。我们可以进行计算:

12       : 00001100
12 - 1   : 00001011
AND 操作 : 00001000

结果是00001000,不等于0,说明12不是2的N次方。

 

public static bool IsPowerOfTwo(int number)
{// 判断是否为负数或零if (number <= 0)return false;// 使用位运算判断是否只有一位是1return (number & (number - 1)) == 0;
}
private static boolean isPowerOfTwo(int n) {return (n > 0) && ((n & (n - 1)) == 0);
}

如果计算这个数是2的N次方得出返回N这个值

 public static int getExpontOfTwo(int number){if(number <=0 || (number & (number -1)) != 0){return -1;}int expont = 0;while(number != 1){number >>= 1;expont++;}return expont;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多示例VS多标签VS多示例多标签-week2

一、多示例 多示例学习属于弱监督学习中的一种&#xff0c;在对模型进行训练时&#xff0c;我们需要把训练数据分成正负包&#xff0c;再将每个包分成大小相同的示例&#xff0c;并且我们只对包的正负进行标注&#xff0c;而不对示例进行分类。当某个包被标识为正时&#xff0c…

Java怎么实现动态代理?

Java怎么实现动态代理&#xff1f; Java中实现动态代理主要依赖于java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。动态代理可以用于在运行时创建代理类及其实例。以下是一个简单的动态代理示例&#xff1a; 首先&#xff0c;定义一个接口&#xff1a;…

Python常见面试知识总结(二):数据结构、类方法及异常处理

【十三】Python中assert的作用&#xff1f; Python中assert&#xff08;断言&#xff09;用于判断一个表达式&#xff0c;在表达式条件为 f a l s e false false的时候触发异常。 断言可以在条件不满足程序运行的情况下直接返回错误&#xff0c;而不必等待程序运行后出现崩溃…

光伏设计方案:实现清洁能源的未来

随着全球气候变化和能源需求日益增长的问题日益严重&#xff0c;光伏发电作为一种清洁、可再生的能源形式&#xff0c;正逐渐成为全球能源转型的主力军。而在光伏发电技术的广泛应用中&#xff0c;一个优秀的光伏设计方案对于实现高效、稳定和安全的发电目标至关重要。 光伏设…

【项目管理】如何用思维导图做计划?

思维导图是一种可视化的思维工具&#xff0c;它可以让我们的思考过程变得很直观。它可以帮助我们考虑到计划的各个方方面面&#xff0c;确定各要素之间的关系。 思维导图总结功能很强&#xff0c;完成计划后&#xff0c;可以用思维导图进行总结&#xff0c;为下一次做计划积累…

Linux中tar命令详解

具体用法 tar命令是Linux中用于打包和压缩文件或目录的命令&#xff0c;常用于备份和归档。它可以将多个文件或目录打包成一个单一的文件&#xff0c;并可以选择是否压缩打包文件。 打包文件或目录 tar -cvf archive.tar file1 file2 directory1上面的命令将file1、file2和dir…

使用【ShardingSphere】分库分表

前言 ShardingSphere可以支撑分库分表&#xff0c;刚果商城采用了垂直分库&#xff08;根据不同业务拆分数据库&#xff09;&#xff0c;因此此文章只演示水平分表。 垂直分库 不同业务拆分为不同的数据库&#xff08;例如商城业务&#xff09; 水平分表 分表可以通过将大表拆…

2024年软考高项还是机考吗?附常见问题答疑

2024年软考高项实行机考&#xff08;三科均为机考&#xff0c;综合知识考试时间为上午8:30-11:00&#xff0c;案例论文联考&#xff0c;考试时间为下午14:30-18:00&#xff09;&#xff0c;本文为大家整理了一些机考常见问题&#xff0c;希望对大家有所帮助。 一、软考高项机考…

React Hooks学习指北

一、前言 在当今的前端开发环境中&#xff0c;越来越多的开发者认可了 Hooks 的强大能力&#xff0c;并纷纷加入到 Hooks 的使用大军中&#xff1a; 2019 年 2 月&#xff0c;React 正式发布 v16.8 版本&#xff0c;引入 Hooks 能力&#xff08;最新的 v18 中&#xff0c;还新…

移液器吸头材质选择——PFA吸头在半导体化工行业的应用

PFA吸头是一种高性能移液器配件&#xff0c;这种材料具有优异的耐化学品、耐热和电绝缘性能&#xff0c;使得PFA吸头在应用中表现出色。那么它有哪些特点呢&#xff1f; 首先&#xff0c;PFA吸头具有卓越的耐化学腐蚀性能。无论是酸性溶液、碱性溶液还是有机溶剂&#xff0c;P…

如何用CHAT帮你提高工作效率?

问CHAT&#xff1a;从规范项目管理流程交付&#xff0c;分别对项目信息安全管理&#xff0c;项目预算管理和项目采购管理三个方面提建议 CHAT回复&#xff1a; 项目信息安全管理: 1. 制定详细的信息安全政策&#xff0c;所有参与项目的员工必须遵守&#xff0c;对其中涉及敏感…

wpf TelerikUI使用DragDropManager

首先&#xff0c;我先创建事务对象ApplicationInfo&#xff0c;当暴露出一对属性当例子集合对于构成ListBoxes。这个类在例子中显示如下代码&#xff1a; public class ApplicationInfo { public Double Price { get; set; } public String IconPath { get; set; } public …

亚马逊S3V4验签与MINIO验签区别

1、先看下官方文档 AWS S3V4 DEMO 2、实际调用试试 1&#xff09;代码 // 计算auth// for a simple GET, we have no body so supply the precomputed empty hashMap<String, String> headers new HashMap<String, String>();headers.put("x-amz-content…

0013Java安卓程序设计-ssm酒品移动电商平台app

文章目录 **摘要**目录系统实现5.1 APP端5.2管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析…

Firewalld 防火墙配置

文章目录 Firewalld 防火墙配置1. Firewalld 概述2. 区域名称及策略规则3. Firewalld 配置方法4. Firewalld 参数和命令5. Firewalld 两种模式6. Firewalld 使用 Firewalld 防火墙配置 1. Firewalld 概述 firewalld 是一个动态防火墙管理器&#xff0c;作为 Systemd 管理的防…

【docker】常用命令

启动docker服务 systemctl start docker 停止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker 查看docker服务状态 systemctl status docker 设置开机启动docker服务 systemctl enable docker 设置关闭开机启动docker服务 systemctl disable …

数据在内存中的存储(浮点型篇)

1.例子&#xff1a;5.5&#xff1a;内存存储为101.1&#xff0c;十分位百分位依次为2的-1次方&#xff0c;2的-2次方&#xff0c;而使用科学计数法可以改写为1.011*2的2次方 2.国际标准公式&#xff1a;-1的D次方*M*2的E次方&#xff0c;x1负0正 3.M在存储时默认整数部分为1&…

使用Spring Boot和领域驱动设计实现模块化整体

用模块化整体架构编写的代码实际上是什么样的&#xff1f;借助 Spring Boot 和 DDD&#xff0c;我们踏上了编写可维护和可演化代码的旅程。 当谈论模块化整体代码时&#xff0c;我们的目标是以下几点&#xff1a; 应用程序被组织成模块。每个模块解决业务问题的不同部分。模块…

springcloud微服务篇--1.认识微服务

一、服务架构演变。 单体架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a;架构简单 &#xff0c;部署成本低。 缺点&#xff1a;耦合度高 分布式架构 根据业务功能对系统进行拆分&#xff0c;每个业务模块作为独立项…