1. 写一个函数返回参数二进制中 1 的个数。2.获取一个数二进制序列中所有的偶数位和奇数位。3. 输出一个整数的每一位。 4.两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
//1. 写一个函数返回参数二进制中 1 的个数
int count_one_bits(unsigned int value)
{
	int count = 0;
	while (value){
		value = value & (value - 1);
		count++;
	}
	return count;
}
//2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
void print_num(unsigned value)
{
	int a[32] = { 0 };
	int i = 0;
	int count = 0;
	while (value) {
		a[i++] = value % 2;
		value /= 2;
		count++;
	}
	printf("2019的二进制奇数位序列");
	for (i = count - 1; i >= 0; i -= 2) {
		printf("%d", a[i]);
	}
	printf("\n");
	printf("2019的二进制偶数位序列");
	for (i = count - 2; i >= 0; i -= 2) {
		printf("%d", a[i]);
	}
	printf("\n");
	
}
//3. 输出一个整数的每一位。
void print(int x)
{
	if (x > 9){
		print(x/10);
	}
	printf("%d ", x % 10);	
}
//4.编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
int Dif_bits(int number_1,int number_2)
{
	int number = number_1 ^ number_2;
	int count=count_one_bits(number);
	return count;
}
int main()
{
	//1.计算15的二进制中1的位数
	int value = 15;
	int result = count_one_bits(value);
	printf("%d 的二进制数中1的个数为 %d\n", value, result);
	//2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
	int number = 2019;//11111100011
	print_num(number);
	//3. 输出一个整数的每一位。
	int a = 1234;
	print(a);
	printf("\n");
	//4.输入例子: 1999 2299   输出例子:7
	int number_1 = 1999;
	int number_2 = 2299;
	int count=Dif_bits(number_1,number_2);
	printf("%d和%d的二进制有%d位不同\n", number_1,number_2, count);
	system("pause");
	return 0;
}
发布了35 篇原创文章 · 获赞 7 · 访问量 3197

猜你喜欢

转载自blog.csdn.net/weixin_44358097/article/details/90449060