0
点赞
收藏
分享

微信扫一扫

判断一个数是不是2的n次方

言诗把酒 2022-01-24 阅读 222

现在我们要写一个代码判断一个数是否是2的n次方

这里有一种很简单:如果一个数是2的n次方,那么只要对这个数一直除以2;最后一定会得到1

也就是说,如果一个数是2的n次方,一直除以2一定会得到2

所以我们可以设置一个while循环,让需要判断的数字一直除以2,如果结果是1,那么这个数就是2

的n次方

代码如下:
 

#include<stdio.h>
int main()
{
float i = 0;
scanf("%f",
while (1)
{

i = i / 2;
if (i == 1)
{
printf("这个数是2的n次方\n");
break;
}
}
return 0;
}

这里还有一种方法就是可以用位运算的方法

大家想一下便可发现,如果一个数是2的n次方,那么它的二进制序列一定只有一个1,就比如2,第二个位是1,4,第三个位是1,16,第五个位是1,其它位都是0

利用这个特点,我们可以写一个循环遍历二进制序列的每一位,并统计1的个数,如果只有一个1,那么说明这个数就是2的n次方

#include<stdio.h>
int Number(int i)
{
int count = 0;
while (i)
{
i = i
count++;
}
return count;
}
int main()
{
int i = 0;
scanf("%d",
int ret=Number(i);
if (ret == 1)
{
printf("这个数是2的n次方\n");
}
else
{
printf("这个数不是2的n次方\n");
}
return 0;
}
举报

相关推荐

0 条评论