BCD码与十进制数转换C语言程序

一、BCD码

1.简介

BCD码(Binary-Coded Decimal‎),也称为二-十进制代码,是一种将十进制数转换为二进制数的编码方式,用4位二进制数来表示1位十进制数中的0~9这10个数码。BCD码使用四个位Bit来储存一个十进制的数码,使二进制和十进制之间的转换转换变得非常快捷和简单。

2.分类

BCD码可分为有权码和无权码两类。其中,常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码。8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。
例如,十进制的12,对应8421格式BCD码是0001 0010,即8*0+4*0+2*0+1*1=1,8*0+4*0+2*1+1*0=2,合起来是12,而原BCD码看上去像是十六进制的0x12。
常用的BCD码见下表:

十进制8421 BCD5421 BCD2421 BCD余3 BCD
00000000000000011
10001000100010100
20010001000100101
30011001100110110
40100010001000111
50101100010111000
60110100111001001
70111101011011010
81000101111101011
91001110011111100

二、进制转换

转换方法比较简单,本文只讨论8421格式的BCD码的转换,且只在2位十进制数范围内。

1.十进制数转BCD码

将2位十进制数的十位和个位分别取出,再进行转换,代码如下:

/*******************************************************************************
  * 函数名:DecToBCD
  * 功  能:十进制数转BCD码
  * 参  数:dec:输入的十进制数
  * 返回值:转换的BCD码
  * 说  明:2位十进制数
*******************************************************************************/
uint8_t DecToBCD(uint8_t dec)
{
	return ((dec / 10) << 4) + (dec % 10);
}

2.BCD码转十进制数

与十进制转BCD码过程相反,将BCD码的高4位和低4位分别取出,并转换:

/*******************************************************************************
  * 函数名:BCDToDec
  * 功  能:BCD码转十进制数
  * 参  数:bcd:输入的BCD码
  * 返回值:转换的十进制数
  * 说  明:2位十进制数
*******************************************************************************/
uint8_t BCDToDec(uint8_t bcd)
{
	return ((bcd >> 4) * 10 + (bcd & 0x0F));	
}
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值