判斷乙個數是否為 4 的冪(也可以是 2 的冪)

2021-09-27 18:34:01 字數 627 閱讀 9826

首先判斷是否為 2 的冪, 因為 4 的冪均是 2 的冪

2 的冪 num ==1, 2, 4, 8, 16, 32 …

換成 2 進製即:1, 10, 100, 1000, 10000, 100000, …

明顯可以得出 ( num & (num) ) == 0;

4 的冪 num == 1, 4, 16, 64, …

換成二進位制即:1, 100, 10000, 1000000, …

明顯可以得出 4 的冪二進位制中的 「1」都在奇數字置上,而判斷二進位制數中的 「1」 是否在奇數字置上就用 num&0x55555555;

因為 5 ==0x0101;

八個 5 是因為整型數字數是 32 位;

拓展:判斷二進位制數中的 「1」 是否在偶數字置上就用 num&0xaaaaaaaa;

因為 a == 0x1010;

#include

#include

#define true 1

#define false 0

intfunction

(int num )

intmain

(void

)return0;

}

判斷乙個數是否為2的次方冪

給定乙個整數n,判斷它是否為2的次方冪。思路 2,4,8,16,32.都是2的n次冪 轉換為二進位制分別為 10 100 1000 10000 100000 這些數減1後與自身進行按位與,如果結果為0,表示這個數是2的n次冪 01 011 0111 01111 011111 10 01 0 100 ...

如何判斷乙個數是否為2的冪

給定乙個整數,寫乙個函式判斷該函式是否為2的冪。例如輸入 16 輸出 true 輸入 5 輸出 false bool ispoweroftwo int n bool ispoweroftwo int n 由二進位制原理可以知道,如果乙個數為2的冪,那麼這個數對應的二進位制應該只有乙個1,演算法1 在...

判斷乙個數是否為回文數

問題描述 輸入乙個數值判斷是否為回文數 回文數是指乙個像12321 123321這樣 對稱 的數 解題思路 將數值的各個位存放在陣列中,若陣列中元素左右對稱,則為回文數,反之不是 設定 left 陣列最左邊下標 right 陣列最右邊下標 首先判斷第乙個和最後乙個數值是否相等,若相等,left ri...