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