C语言 用代码将10进制转换为2进制表示

按位运算符

按位与运算符 a & b 按位计算 a 和 b 的逻辑与
按位或运算符 a | b 按位计算a和b的逻辑或
按位异或运算符 a ^b 按位计算a和b的逻辑异或
~运算符 ~a 计算a的反码(将每一位取反之后的值)

注:这些运算符的操作必须是整数类数据类型或者枚举型。如果应用于浮点型等数据类型操作数,编译时就会出错。

#include <stdio.h>

int count_bits(unsigned x){
	int count = 0;
	while(x) {
		if (x & 1U) {
			count++;
		}
		x >>= 1;
	}
	return count;
}

int int_bits(void){
	return count_bits(~0U);
}

void print_bits(unsigned x){
	int i ;
	for (i = int_bits() - 1; i >= 0; i--){
		putchar(((x >> i) & 1U) ? '1' : '0');
	}
}

int main(void){
	unsigned num1, num2;
	printf("请输入两个非负整数。\n");
	printf("num1 : ");
	scanf("%u", &num1);
	printf("num2 : ");
	scanf("%u", &num2);
	
	printf("\nnum1        = ");
	print_bits(num1);
	
	printf("\nnum2        = ");
	print_bits(num2);
	
	printf("\nnum1 & num2 = ");
	print_bits(num1 & num2);
	
	printf("\nnum1 ! num2 = ");
	print_bits(num1 | num2);
	
	printf("\nnum1 ^ num2 = ");
	print_bits(num1 ^ num2);
	
	printf("\n~num1       = ");
	print_bits(~num1);              //反码 
	
	printf("\n~num2       = ");    // 反码 
	print_bits(~num2);
	
	putchar('\n');
	
	return 0;
}

运行结果:
在这里插入图片描述

  • count_bits函数:返回整数x中设置的位数
  • int_bits函数:返回 unsigned 型位数
  • print_bits函数: 显示 unsigned 型的位的内容

函数 print_bits 是将无符号整数 x 的所有位有用 0 和 1 来表示的函数。函数 int_bits 和 count_bits 被用于执行这一工作。

注:程序会在判断 unsigned 型的位数之后进行显示。这里展示的是 unsigned 型为16位的例子(如果unsigned型为32位,就会显示32位)。

猜你喜欢

转载自blog.csdn.net/qq_44989881/article/details/106737599
今日推荐