1,写一个函数返回二进制中一的个数
比如:15 —– 0000 1111—— 4个1
#include <stdio.h>
#include <stdlib.h>
int count_one_bits(unsigned int value)
{
int i = 0, count = 0;
for (i=0; i<32; ++i )
{
if ((value>>i) & 1 == 1)
{
count ++;
}
}
return count;
}
int main()
{
int i = 0;
scanf ("%d",&i);
printf ("%d\n",count_one_bits(i));
system ("pause");
return 0;
}
2,获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 0;
int j = 0;
int k = 0,i = 0;
scanf("%d",&a);
printf ("偶数位:");
for (j=1; j<32; j+=2)
{
if (((a>>j) & 1) == 1)
{
k = 1;
}
else
{
k = 0;
}
printf ("%d",k);
}
printf ("\n奇数位:");
for (i=0; i<32; i+=2)
{
if (((a>>i) & 1) == 1)
{
k = 1;
}
else
{
k = 0;
}
printf ("%d",k);
}
system ("pause");
return 0;
}
3,输出一个整数的每一位
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 1234;
while (i)
{
printf ("%d ",i%10);
i = i/10;
}
printf ("\n");
system ("pause");
return 0;
}
4,两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子: 1999 2299 输出例子:7
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int a = 0,b = 0,count = 0;
scanf ("%d%d",&a,&b);
a = a ^ b;
for(i=0; i<32; ++i)
{
if (((a>>i) & 1) == 1 )
count ++;
}
printf ("不同的有%d位\n",count);
system ("pause");
return 0;
}