1.写一个函数,返回二进制中1的个数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//写一个函数,返回参数二进制中的1的个数
int count_one_bits(unsigned int value)
{
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if ((value & 1) == 1)
{
count++;
value >>= 1;
}
}
return count;
}
int main()
{
int num = 0;
printf("请输入一个无符号整数:");
scanf("%d", &num);
int ret = count_one_bits(num);
printf("%d的二进制中1的个数为%d\n", num, ret);
system("pause");
return 0;
}
2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//获取一个数二进制序列中所有的偶数位和奇数位
void Even(int num)//偶数序列
{
int arr[16] = { 0 };
int i = 0, j = 0;
for (i = 0; i < 32; i+=2)
{
arr[15 - j] = (num >> i) & 1;//从后向前存储
j++;
}
printf("偶数位序列是:\n");
for (i = 0; i < 16; i++)
{
printf("%d", arr[i]);
}
printf("\n");
}
void Odd(num)//奇数序列
{
int arr[16] = { 0 };
int i = 0, j = 0;
for (i = 1; i < 32; i += 2)
{
arr[15 - j] = (num >> i) & 1;//从后向前存储
j++;
}
printf("奇数位序列是:\n");
for (i = 0; i < 16; i++)
{
printf("%d", arr[i]);
}
printf("\n");
}
int main()
{
int num = 0;
printf("请输入一个整数:");
scanf("%d", &num);
Even(num);
Odd(num);
system("pause");
return 0;
}
3.输出一个整数的每一位
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//输出一个整数的每一位
void Binary(int num)
{
int i = 0;
int arr[32] = { 0 };
for (i = 0; i < 32; i++)
{
arr[31-i] = (num >> i) & 1;
}
for (i = 0; i < 32; i++)
{
printf("%d", arr[i]);
}
}
int main()
{
int num = 0;
printf("请输入一个整数:");
scanf("%d", &num);
Binary(num);
system("pause");
return 0;
}
4.实现编程:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//两个整数的二进制中,有多少位不同
int Diffbit(int num1,int num2)
{
int count = 0;
int a = num1^num2;
int i = 0;
for (i = 0; i < 32; i++)
{
if ((a >> i) & 1 == 1)
{
count++;
}
}
return count;
}
int main()
{
int num1 = 0, num2 = 0;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int ret = Diffbit(num1, num2);
printf("两个数有%d个不同位\n", ret);
system("pause");
return 0;
}