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.pswp.cn/news/215663.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215663.shtml
英文地址,請注明出處:http://en.pswp.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;每個業務模塊作為獨立項…