給定一個接受int變量的bool數據類型的方法,那麼將確定int是否是指數爲2的代碼行是什麼? 2^n ..... 2,4,8,16,32等我知道一種使用while循環和if語句的方法,但我正在尋找它在一行上。如果給定的int是2的指數,則返回#
回答
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
位運算是更多的樂趣,可是,老天對任何人都有維護該代碼憐憫。
這是爲什麼downvoted?這是__a__解決方案。 – AraK 2010-10-04 21:53:15
例如25呢?在這種情況下,平方根是5(整數),但不是有效數字。 – 2010-10-04 21:54:05
由於我最初誤解了問題併發布了不正確的答案,因此它被低估了。它已被編輯爲正確的解決方案。 – 2010-10-04 21:54:58
bool powerOfTwo = (unchecked(n & (n-1)) == 0) && (n != 0)
bool answer = ((n & ~(n-1)) == n && n!=0);
這通過了所有我在它扔了基本測試。
看起來不錯。
- 1. Java - 給定一個int數組,如果它包含2或3,則返回true
- 2. 如果bool爲真,則返回int
- 3. 函數返回指向int的指針
- 4. c/C++ | int * excepted,int給定(返回一個指針??)
- 5. CodingBat-Excercise:如果給定數組在數組中的前2位或後2位中包含1,則返回true
- 6. SQL,如果在指定日期沒有數據,則返回行
- 7. 如何找到最接近的偶數給定的int? (給定11返回12)
- 8. 如果找到記錄,則返回一個int,如果沒有找到數據,則返回false
- 9. 如果是元音,則返回true,否則返回false
- 10. 將Int分配給Int並返回Int
- 11. 如果給定的PIN碼有一個字符,則返回true;否則失敗?
- 12. 將2個int數組傳遞給方法並返回1個int數組--java
- 13. 如果數據基於SQL中給定的優先級存在,則返回行
- 14. 返回數組,如果給定的數字在裏面,返回數組和給定的數字,如果它不是
- 15. 如果與給定屬性沒有關係,則返回?
- 16. Mysql的返回結果,如果2
- 17. 如果指定相同的值,setter是否應立即返回?
- 18. 如果變量未定義則返回
- 19. 如果select返回null,則返回值
- 20. Int和int不可轉換爲Int - (返回2個數組,UITableView)
- 21. 如何返回一個指針INT,指出矢量<int>
- 22. Ajax將請求結果返回給整個屏幕而不是指定的textarea
- 23. 返回文本中給定位置前後的指定字數
- 24. 如果數據庫沒有記錄,則返回一個聲明的int
- 25. 返回範圍如果類型是指針,函數的值
- 26. 從查詢返回int值的int型函數的返回值是什麼
- 27. Javascript:解釋如果Type(x)未定義,則返回true。如果Type(x)是空,則返回true
- 28. 如果指定的字符未找到,則返回原始值的公式
- 29. 實現,如果給定的字符串指定的通配符模式匹配返回True的函數,否則返回False
- 30. Zend的2 + 2原則返回CheckBox值
適用於uint,但對於int變量,您需要排除0x80000000 – 2010-10-04 21:55:39
因此,將v!= 0的檢查更改爲v> 0,然後您就可以開始了。 – 2010-10-04 22:27:25