给出一行C语言表达式,判断给定的整数是不是是一个2的幂

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给出一行C语言表达式,判断给定的整数是不是是一个2的幂相关的知识,希望对你有一定的参考价值。

下面是一个判断给定整数是否是2的幂的C语言代码。

int is_power_of_two(int n)

return ((n != 0) && !(n & (n - 1)));

上述代码使用位运算的方法判断给定整数n是否是2的幂。具体来说,如果n是2的幂,则n二进制中只有一个1,如4(100),8(1000),16(10000)等。因此,将 n&(n-1) 的结果取反后,应该得到0。如果n!=0,则n是2的幂函数。
参考技术A 一个数n
若(n&(n-1))==0则n是2的幂追问

为什么啊

本回答被提问者采纳
参考技术B #include<stdio.h>
int fun(int num)

if(num==1)
return 1;
if(num%2==0)
fun(num/2);
else
return 0;

int main()

int num;
printf("请输入任意整数:\n");
scanf("%d",&num);
if(fun(num)==1)
printf("%d是2的幂!\n",num);
else
printf("%d不是2的幂!\n",num);
参考技术C 思路就是这个整数N求2的底数M,再把M以2求幂与N相比。相等就是,不相等就不是
if(N==pow(2,log(N)/log(2)))

以上是关于给出一行C语言表达式,判断给定的整数是不是是一个2的幂的主要内容,如果未能解决你的问题,请参考以下文章

判断C语言算术表达式的合法性

C语言编程:给定N(2<=N<=100)个不同的正整数,输出其中最大的2个数。 求给出具体的程序

c语言如何判断素数?

题解PTA团体程序设计天梯赛L1-028 判断素数 (10 分) Go语言 | Golang

PAT Basic 1011

A+B和C