1.写一个函数返回参数二进制中 1 的个数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int count_one_bits(unsigned int n)
{
int count = 0;
for(count=0;n;n>>=1)
count +=n&1;
return count;
}
int main()
{
unsigned int n=15;
int count=count_one_bits(n);
printf("1的个数为:%d\n",count);
return 0;
}
2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 18;
int i = 0;
int num = 0;
printf("偶数位为:");
for(i=31;i>0;i-=2)
{
num=(n>>i)&1;
printf("%d",num);
}
printf("\n");
printf("奇数位为:");
for(i=30;i>=0;i-=2)
{
num=(n>>i)&1;
printf("%d",num);
}
printf("\n");
return 0;
}
3. 输出一个整数的每一位
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d",&n);
while(n)
{
if(n<0)
n=-n;
printf("%d\n",n%10);
n /= 10;
}
return 0;
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 1999;
int b = 2299;
int count = 0;
while(a||b)
{
if((a&1)!=(b&1))
count++;
a>>=1;
b>>=1;
}
printf("count=%d\n",count);
return 0;
}