求教,最简单的判断一个数是否是2的幂次
比如,如何判断一个数是2 4 8 16 32 64 128 256 。。。。
[解决办法]
用for循环 再用个break 可以实现
[解决办法]
num&(num-1) 是否为0
[解决办法]
看这个数的二进制表示中是否只有一个"1",是则表明该数是2的幂次,否则不是
[解决办法]
#include<stdio.h>
void main()
{
float i,m;
printf("输入一个整数:");
scanf("%f",&i);
for(;;)
{ m=i;
if( (i=m/2) !=(int) i ) { printf("否"); break; }
if( (i=m/2) ==1 ) { printf("是"); break; }
}
printf("\n");
}//第一次发帖。
[解决办法]
if ((x > 0) && (0 == (x & (x - 1))))
[解决办法]
main(){ int i; int count = 0; printf("请输入一个数字:"); scanf("%d", &i); if (i<=0) { printf("该数不是2的幂。\n"); return; } while(i) { if(i&1) count++; i>>1; } if (count == 1) { printf("该数是2的幂\n"); } else { printf("该数不是2的幂。\n"); } return;}