C中的2的幂

假设我们有一个数字n。我们必须检查数字是否为2的幂。因此n = 16,则输出为true,如果n = 12,则为false。

为了解决这个问题,我们将使用逻辑运算。如果我们看到数字是2的幂,那么在该数字的二进制表示中,MSb将为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\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

以上是 C中的2的幂 的全部内容, 来源链接: utcz.com/z/327116.html

回到顶部