给出一行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的幂函数。
一个数n
若(n&(n-1))==0则n是2的幂
#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);
}
思路就是这个整数N求2的底数袜差M,再把M以2求幂与告搭皮N相枝局比。相等就是,不相等就不是
if(N==pow(2,log(N)/log(2)))
相关内容
- 给出2,5,8,9四个数,算24点 用两种以上的方法
- 给出n,a[0],a[n+1]和公式 a[i] = (a[i-1] + a[i+1])/2如何用c语言求出a[1]?
- 给出一百分制成绩要求输出成绩等级ABCDE。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下E
- 给出一行C语言表达式,判断给定的整数是否是一个2的幂
- 给出三个多项式 X=2a的平方+3ab+b的平方,Y=3a的平方+3ab,Z=a的平方+ab,
- 给出三个多项式:2/1x2+3x+1,2/1x2+3x+1,2/1x2-x,请你选择其中两个进行加法运算,并把结果进行因式分解
- 给出三个多项式:
- 给出三个多项式:二分之一X的平方+2X-1 二分之一X的平方+4X+1 二分之一X的平方-2X选择你