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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP