台北网站建设,厦门网站建设68,100款软件免费下载大全,crm管理系统是什么意思目录
前言
1. BCD码
2. BCD码和十进制转换的算法 前言 最近在学习STM32单片机#xff08;不仅仅是32#xff09;的RTC实时时钟系统的过程中#xff0c;需要配置时钟的时间、日期#xff1b;这些都需要实现BCD码和十进制之间进行转换。这里和大家一起学习BCD码和十进制之…目录
前言
1. BCD码
2. BCD码和十进制转换的算法 前言 最近在学习STM32单片机不仅仅是32的RTC实时时钟系统的过程中需要配置时钟的时间、日期这些都需要实现BCD码和十进制之间进行转换。这里和大家一起学习BCD码和十进制之间转换的代码 1. BCD码 BCD码是指用二进制数来表示十进制的数也就是说4位二进制数来表示一位十进制数因此二进制可以表示的最大十进制数为91001。 因为二进制数能表示的最大十进制数才是9所以当数字大于9时也就是数字为两位数时我们需要用8位BCD码来表示4位的BCD码只能表示9以下的数字遵循逢九进一的原则 我们都知道二进制是逢二进一十进制是逢十进一十六进制是逢十六进一它们之间每次都差6所以一个十进制想要转换成BCD码必须先要算清楚进了几次位
当两个十进制数相加 但是如果相加最终的值位于10-15之间也就是十六进制数的A-F之间则需要加6进行修正如果相加的值位于20-25之间则需要修正2次也就是加上2*612就是这个道理每出现一次十六进制溢出9就修正一次溢出多少次修正多少次 多次修正的情况比方说十进制下的6666/106次也就是说修正了6次这里修正次数的意思是出现一次十六进制下溢出9就修正一次溢出第一次来到10-15溢出第二次来到20-25依次类推总共溢出了6次就是这个道理所以需要加上6*636所以最终的BCD码为6636102
BCD码转十进制是一个道理 2. BCD码和十进制转换的算法
十进制转换成BCD码代码如下
//dec十进制数 bcdBCD码
int dec_bcd(int dec)
{return(dec(dec/10)*6);
}
BCD码转换成十进制代码如下
//dec十进制数 bcdBCD码
int bcd_dec(int bcd)
{return(bcd-(bcd4)*6);//该返回的意思是说比如BCD码为10011右移四位空位补0会得到0001//该值表示修正的次数之所以这样是因为四位的二进制表示不来大于9的十进制//所以才会引入8位BCD码如果将8位BCD的高4位移回到低四位的位置就会得到减去1111之后的数该数就是修正的次数
}