幾種判斷乙個整數是否是2的n次方冪的方法

2022-03-29 23:44:34 字數 411 閱讀 8299

1:簡單除法

int i = 128; //待判斷的整數

int count = 1; //待判斷的整數是2的count次方

while (i)

if (0 == i%2)

else

}2:16進製制中1有幾個

大家發現沒有,凡是2的n次方的整數,它的二進位制的所有位中都只有乙個1,並且這個1肯定在最高位。既然這樣的話,那麼這個問題就變成了如何來計算二進位制位中1的個數,對於這個計算演算法,《程式設計之美——微軟技術面試心得》這本書中講了三種方法,都很精闢,這兒我貼出其中一種的判斷方法,如下:

int fuc(int i)

if(count < 2)

else  }

最簡單法:

int fuc(int i)

判斷乙個整數是否是2的n次方

參考 如題,如何判斷乙個整數是否是2的n次方,我能想到的方法有兩個 1.一直除2,看最後是否等於1.最笨的方法 2.轉換成2進製,看是否是這個樣子的 1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者說只有乙個1.3.當我還在為我能想到第二個方法而沾沾自喜的時候,我看到了下...

判斷乙個正整數是2的n次

判斷乙個正整數是2的n次,假設不包括0。想了三種辦法。第一種 任意乙個數,如果是1,則為2的n次,如果大於1,則1 判斷該數是否為偶數,是則轉2,否則不是2的n次。2 判斷該數是否為2,是則為2的n次,否則對2做整除運算後轉1。在devc 上進行了實現,如下 include using namesp...

幾種判斷乙個整數是否是2的n次方冪的方法

1 簡單除法 int i 128 待判斷的整數 int count 1 待判斷的整數是2的count次方 while i if 0 i 2 else 2 16進製制中1有幾個 大家發現沒有,凡是2的n次方的整數,它的二進位制的所有位中都只有乙個1,並且這個1肯定在最高位。既然這樣的話,那麼這個問題就...