2的冪判別

2022-08-04 19:12:19 字數 439 閱讀 5079

轉|如何快速判斷正整數是否為2的冪

**過往記憶:

2的冪有以下兩個特點:

1.20=1 -> 0001,21=2 -> 0010,22=4 ->  0100,23=8  -> 1000二進位制中只有乙個1,並且1後面跟了n個0。

2.如果將這個數減去1後會發現,僅有的那個1會變為0,而原來的那n個0會變為1;因此將原來的數與去減去1後的數字進行與運算後會發現為零((x & x- 1) == 0)。

原因:因為2n換算是二進位制為10……0這樣的形式,2n-1的二進位制為0111...1,兩個二進位制求與結果為0,例如:16的二進位制為10000;15=01111,兩者相與的結果為0。

故可以用以下演算法判斷某個正整數是否為2的冪:

1

bool ispoweroftwo(int

x)

2的冪,3的冪,4的冪

給定乙個整數,編寫乙個函式來判斷它是否是 2 的冪次方。示例 1 輸入 1 輸出 true 解釋 20 1 示例 2 輸入 16 輸出 true 解釋 24 16 示例 3 輸入 218 輸出 false 分析 class solution 給定乙個整數,寫乙個函式來判斷它是否是 3 的冪次方。示例...

2的冪次方

2的冪次方 noip1998 問題描述 任何乙個正整數都可以用2的冪次方表示。例如 137 2 7 2 3 2 0 同時約定方次用括號來表示,即ab可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 進一步 7 2 2 2 2 0 21用2表示 3 2 2 0 所以最後137可表示為 ...

2的次冪表示

include includevoid fun int n int i,j,k,l int h 0 k n j 0 while k 0 l j 1 for h l h 0 h printf d a h printf n for i l i 0 i else continue if i 1 print...