复杂版
十进制转BCD码
int decimal_bcd_code(int decimal)
{
int sum = 0; //sum返回的BCD码
for (int i = 0; decimal > 0; i++)
{
sum |= ((decimal % 10 ) << ( 4*i));
decimal /= 10;
}
return sum;
}
BCD码转十进制
int bcd_decimal_code( int bcd)
{
int sum = 0, c = 1; // sum返回十进制,c每次翻10倍
for(int i = 1; bcd > 0; i++)
{
if( i >= 2)
{
c*=10;
}
sum += (bcd%16) * c;
bcd /= 16; // 除以16同理与十进制除10将小数点左移一次,取余16也同理
}
return sum;
}
简单版
十进制转BCD码
int bcd_decimal_code( int bcd)
{
return (bcd + (bcd/10) * 6);
}
BCD码转十进制
int decimal_bcd_code(int decimal)
{
return (decimal - (decimal>>4) * 6);
}