求两个数二进制中不同位的个数
c=c>>1;
c>>1;会报错,右移后 需要给c再次赋值
#include <stdio.h>
int main()
{ int a;
int b;
int count=0;
int c;
printf("put two num:\n");
scanf("%d %d",&a,&b);
c=a^b;
while(c)
{
if((c&1)==1)
{
count++;
}
c=c>>1;
}
printf("count=%d\n",count);
return 0;
}
打印整数二进制的奇数位和偶数位
count使用完成后重新赋值
#include <stdio.h>
int main()
{ int a;
int b;
int c;
int count=1;
printf("输入一个数:\n");
scanf("%d",&a);
b=a;
c=a;
while (c)
{
printf("%d ",c&1);
c=c>>1;
}
printf("\n奇数列:");
while (a)
{ if(count%2==1)
{printf("%d ",a&1);}
a=a>>1;
count++;
}
printf("\n");
count=1;
printf("偶数列:");
while (b)
{ if(count%2==0)
{printf("%d ",b&1);}
b=b>>1;
count++;
}
printf("\n");
return 0;
}
交互两个数不使用临时变量
#include <stdio.h>
int main()
{ int a = 10;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}
统计二进制中1的个数
#include <stdio.h>
int main()
{ int a;
int b;
int c;
int count=0;
printf("输入一个数:\n");
scanf("%d",&b);
while (b)
{
printf("%d ",b&1);
if(b&1)
count++;
b=b>>1;
}
printf("\n二进制中的一的个数为%d\n",count);
return 0;
}