69,373
社区成员
发帖
与我相关
我的任务
分享
if ((a & (a-1)) == 0) /*if (a & (~a+1)) == a)也可以*/
/*判断a是2的n次方*/
#include <stdio.h>
int main()
{
long a;
printf("Please input a number:");
scanf("%ld", &a);
if (a!=0)
{
if ((a & (~a+1)) == a) /*(a & (~a+1)) == a 也可以*/
printf("Yes\n");
else
printf("No\n");
}
else
printf("No\n");
return 0;
}
/*b数组在a中有的放在c,没有的放在d(长度为10) */
#include <stdio.h>
#define MAXSIZE 10
int main()
{
int a[] = {0,1,2,3,4,5,6,7,8,9};
int b[] = {2,4,6,8,10,12,14,16,18,20};
int c[MAXSIZE] = {0};
int d[MAXSIZE] = {0};
int i, j, k, l;
k = 0;
l = 0;
for (j = 0; j < MAXSIZE; j++)
{
for (i = 0; i < MAXSIZE; i++)
{
if(b[j] == a[i])
{
c[k++] = b[j];
break;
}
}
if (i == MAXSIZE)
d[l++] = b[j];
}
return 0;
}
bool is_2pn(long int a, int n)
{
if( n>= sizeof( long int)) return false;
return (a == 1<<n);
}
while(i%2==0)
{
i/=2;
}
retrun i==1?1:0;