首页 > 编程知识 正文

十进制与bcd码之间的转换,c语言3×3数组行列互换

时间:2023-05-04 05:41:40 阅读:124375 作者:520

目录1,复杂版

2、简易版

最近,要写单片机的RTC日期、时间配置,必须实现十进制、BCD码交换。 和大家分享那个Demo。

BCD是以二进制表示十进制数的符号。 也就是说,由于一位十进制数表示为四位二进制数,所以四位二进制数表示最大的十进制数9(1001 )。

4位BCD代码无法表示10进制的2位,如果数字大于9,则必须用8位BCD代码表示。 高位都可以是九进一。

十进制是所有的十进制,而十六进制是所有的十六进制,它们之间的进位差每次为6,所以要把十进制转换成BCD码,必须先计算多进制的位数。

将两个BCD代码相加时,如果和小于或等于1001,即小于或等于十进制9,则无需修改。

如果求和介于1010到1111 (即十六进制0ah到0fh )之间,则必须添加6进行修改。

例如,十进制99提前了99/10=9次。 由于每次提前与十六进制提前相比相差6,所以总共相差96=54。 也就是说,BCD代码为9954=153 (十六进制: 0X99 )。 BCD码转换为十进制码也是同样的原理。

1、将复杂版的十进制数转换成BCD码。 代码如下。

intdecimal_BCD_code(intdecimal ) {int sum=0; //sum返回的BCD代码for(intI=0; decimal 0; I ) sum|=() decimal ) )4*i ) ); decimal /=10; }return sum; } BCD代码转换为十进制数字,代码如下所示:

intBCD_decimal_code(intBCD ) {int sum=0,c=1; //sum返回十进制数,c每次增加10倍的for(intI=1; bcd 0; I ) if(I=2) {c*=10; (sum=) BCD ) c; bcd /=16; 与除以//16一样,用十进制除以10,将小数点左移一次,取剩下的16也一样}返回和; ) 2、简易版的十进制转换为BCD代码,代码如下:

intBCD_decimal_code(intBCD ) return (BCD ) BCD/10 ) * 6); } BCD代码转换为十进制数字,代码如下所示:

intdecimal_BCD_code(intdecimal ) return ) decimal-(decimal4) * 6); }参考资料:

一、十进制和BCD码转换的算法

二、十进制转换BCD代码在线工具

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。