C中的2的幂
假设我们有一个数字n。我们必须检查数字是否为2的幂。因此n=16,则输出为true,如果n=12,则为false。
为了解决这个问题,我们将使用逻辑运算。如果我们看到数字是2的幂,那么在该数字的二进制表示中,MSb将为1,而所有其他位均为0。因此,如果执行[nAND(n–1)],则将返回如果n是2的幂,则为0。如果我们看到n=16=10000二进制,(n–1)=15=01111二进制,那么10000AND01111=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\n", isPowerOfTwo(16) ? "true" : "false");
printf("%s\n", isPowerOfTwo(12) ? "true" : "false");
printf("%s\n", isPowerOfTwo(1) ? "true" : "false");
printf("%s\n", isPowerOfTwo(32) ? "true" : "false");
printf("\n");
}输入值
16 12 1 32
输出结果
true false true true
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法