簡體   English   中英

如果給定的int是2 C的指數,則返回#

[英]Return if a given int is an exponent of 2 C#

給定一個接收int變量的bool數據類型的方法,什么是單行代碼,它將確定int是否為2或2 ^ n的指數..... 2,4,8,16, 32等我知道使用while循環和if語句的方法,但我正在尋找它在一條線上。

來自Bit Twiddling Hacks

uint v;         // we want to see if v is a power of 2
bool f;         // the result goes here 

f = (v != 0) && ((v & (v - 1)) == 0);

只需檢查數字的對數(基數2)是否為整數。

在一行C#中:

Math.Log(x, 2) % 1 == 0

按位操作更有趣,但是主人憐憫任何人必須維護代碼。

bool powerOfTwo = (unchecked(n & (n-1)) == 0) && (n != 0)
bool answer = ((n & ~(n-1)) == n && n!=0);

這通過了我投入的所有基本測試。

看起來不錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM