C 語言中求一個數是否是 2 的冪


假設我們有一個數 n,我們要檢查這個數是否為 2 的冪。如果 n = 16,則輸出將為真,如果 n = 12,則輸出將為假。

為了解決這個問題,我們將使用邏輯運算。如果我們檢視 2 的冪的形式,則該數的二進位制表示中的最高有效位為 1,所有其它位為 0。因此,如果我們執行 [n AND (n – 1)],如果 n 為 2 的冪,這將返回 0。如果我們檢視 n = 16 = 10000(二進位制),(n – 1) = 15 = 01111(二進位制),則 10000 AND 01111 = 00000 = 0

C 語言示例

我們來看一下以下實現,以便更好地理解 -

#include <stdio.h>
#include <math.h>
#define MAX 20
bool isPowerOfTwo(int n){
   return(n>0 && !(n & (n-1)));
}
int main() {
   printf("%s
", isPowerOfTwo(16) ? "true" : "false");    printf("%s
", isPowerOfTwo(12) ? "true" : "false");    printf("%s
", isPowerOfTwo(1) ? "true" : "false");    printf("%s
", isPowerOfTwo(32) ? "true" : "false");    printf("
"); }

輸入

16
12
1
32

輸出

true
false
true
true

更新日期: 2020 年 4 月 28 日

614 次觀看

啟動你的 職業

透過完成課程獲得認證

開始
廣告