方法一:用這個數來除以2,得到商和餘數,如果餘數不為0,那這個數就不是2的整數次冪,否則再用商除以2,又得到商和餘數,重複上面的操作,直到商為1,當商為1,餘數為0時,這個數就是2的整數次冪當商為0。
/*
* @author: lzyws739307453
* @language: c++
*/#include using namespace std;
int edge(int n)
return 1;
}int main()
return 0;
}
方法二:我們知道2的n次方的二進位制只有最高位是1,其餘為0,減1後最高位向後借位為0,其餘為1。因此將原來的數與減去1後的數字進行與運算後會發現為零。
兩個不同長度的資料進行位運算時,系統會將二者按右端對齊,然後進行位運算。短的那個資料如果是負數,左邊補1,否則補0。
/*
* @author: lzyws739307453
* @language: c++
*/#include using namespace std;
int main()
return 0;
}
判斷乙個數是不是2的整數次冪
用位運算 二進位制數的位權是以2為底的冪,如果乙個整數 m 是 2 的 n 次冪,那麼轉換為二進位制之後只有最高位為 1,其餘位置為 0,再觀察 m 1 轉換為二進位制後的形式以及 m m 1 的結果,例如 2 0000 0010 1 0000 0001 2 1 0000 0010 0000 000...
判斷乙個數是不是2的冪
將2的冪次方寫成二進位制形式後,很容易就會發現有乙個特點 二進位制中只有乙個1,並且1後面跟了n個0 因此問題可以轉化為判斷1後面是否跟了n個0就可以了。如果將這個數減去1後會發現,僅有的那個1會變為0,而原來的那n個0會變為1 因此將原來的數與去減去1後的數字進行與運算後會發現為零。最快速的方法 ...
判斷乙個數是不是2的冪
我們經常會遇到這樣乙個問題,就是判斷某個資料是否為2的n 次方 1,2,4,8,16.例如如果使用者輸入的不是 2 n,則要求使用者重新輸入。為了說明這種判斷演算法,我首先構造乙個測試程式,如下 include include int main end clock printf the total ...