日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BCD码与十进制转换

發布時間:2023/12/10 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BCD码与十进制转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.BCD碼 概念

BCD碼(Binary-Coded Decimal?)稱為二進碼十進數或二——十進制代碼。用4位二進制數來表示1位十進制數中的0~9這10個數碼。BCD碼可分為有權碼和無權碼兩類:有權BCD碼有8421碼、2421碼、5421碼,其中8421碼是最常用的BCD碼。無權BCD碼有余3碼,余3循環碼等。

1.1 8421碼

8421 BCD碼是最基本和最常用的BCD碼,它和四位自然二進制碼相似,各位的權值為8、4、2、1,故稱為有權BCD碼。和四位自然二進制碼不同的是,它只選用了四位二進制碼中前10組代碼,即用0000~1001分別代表它所對應的十進制數,余下的六組代碼不用。如十進制數8的BCD碼是1000。

1.2 5421碼

5421 BCD碼是有權BCD碼,從高位到低位的權值分別為5、4、2、1。

1.3 2421碼

2421 BCD碼為有權BCD碼,從高位到低位的權值分別為2、4、2、1。

1.4 余3碼

余3碼是8421 BCD碼的每個碼組加3(0011)形成的。常用于BCD碼的運算電路中。

2.BCD 碼應用場合

BCD碼目前最常使用的應該是時鐘芯片中,從時鐘芯片中獲取的時間數據即是BCD碼格式,需要程序員將其轉換為十進制數據。其他應用場合還包括,PLC控制輸入、撥碼開關輸入、數碼管控制等。

2.1原理

比如BCD碼:0x99(153),該BCD碼轉換成十進制是99.
十進制是逢十進一,而十六進制是逢十六進一,它們之間的每次進位差6,所以一個十進制數要轉換成BCD碼,要先算清多進位的位數,比如,十進制99進位了99/10=9次,每次進位和十六進制進位相比差6,所以一共差了9×6=54,即99+54=153(BCD)。BCD碼轉化成十進制碼也一樣。

2.2代碼

static uint8_t BCD2DEC(uint8_t bcd) { return (bcd-(bcd>>4)*6); } static uint8_t DEC2BCD(uint8_t dec) { return (dec+(dec/10)*6); }

qt示例獲取7位BCD datetime

void main() {GetCurBCDTime7(unsigned char* pBcdTime){QDateTime datetime = QDateTime::currentDateTime();pBcdTime[0]=DEC2BCD(datetime.date().year()/100);pBcdTime[1]=DEC2BCD(datetime.date().year()%100);pBcdTime[2]=DEC2BCD(datetime.date().month());pBcdTime[3]=DEC2BCD(datetime.date().day());pBcdTime[4]=DEC2BCD(datetime.time().hour());pBcdTime[5]=DEC2BCD(datetime.time().minute());pBcdTime[6]=DEC2BCD(datetime.time().second());for(int index=0;index<7;index++){qDebug()<<BCD2DEC(pBcdTime[index]);}} }

總結

以上是生活随笔為你收集整理的BCD码与十进制转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。