十进制与BCD码互相转换

十进制到BCD:

#include <stdio.h>

int main()
{
	int decimalNumber = 35; // 要转换为BCD码的十进制数
	
	int tens = decimalNumber / 10;
	int ones = decimalNumber % 10;
	
	// 将十位和个位转换为BCD码
	char bcd = (tens << 4) | ones;	//0011 0000 
	
	printf("十进制数 %d 转换为BCD码为: 0x%X\n", decimalNumber, bcd);
	
	return 0;
}

//最后输出0X35

分析:

先分别取该十进制的十位和个位,
然后将十位左移4位(尽管此时十位是十进制数,但是你写了左移运算符,编译器就会在内部以二进制形式表示该十进制),
最后与个位相或就好了。

 

BCD到十进制:

#include <stdio.h>

int main()
{
    int decimal = 0;
	unsigned char bcd = 0x23; // 23的BCD码表示
    
	// 获取十位和个位数字
	int tens = (bcd >> 4) & 0x0F;
	int ones = bcd & 0x0F;
	
	// 将十位数值乘以10,然后加上个位数值
	decimal = (tens * 10) + ones;
	printf("BCD码 0x%X 转换为十进制数为: %d\n", bcd, decimal);
	
	return 0;
}

分析:

取到tens后,尽管在内部以二进制形式表示,但在计算过程中,它会被当做十进制数值 2 来处理

 

posted @ 2024-03-16 19:38  iZJ"Qq4577105  阅读(168)  评论(0编辑  收藏  举报