2023年12月14日發(作者:采用t來表示)

BCD碼 (二 ─ 十進制碼)
在一些數字系統中,如電子計算機和數字式儀器中,往往采用二進制碼表達十進制數。通常,把用一組四位二進制碼來表達一位十進制數的編碼方法稱作二─十進制碼,亦稱BCD碼(Binary Code Decimal)。
4位二進制碼共有16種組合,可從中任取10種組合來表達0~9這10個數。根據不同的選取方法,可以編制出很多種BCD碼,如8421碼,5421碼,2421碼,5211碼和余3碼。表B1101列出了這幾種BCD碼,其中的8421 BCD碼最為常用。
由于每一組4位二進制碼只代表一位十進制數,因而n位十進制數就得用n組4位二進制碼表達。
【例1110】把十進制數369.74編成8421 BCD碼。
解: 3 6 9 7 4
↓ ↓ ↓ ↓ ↓
0011 0110 1001 0111 0100
∴(369.74)10=(0011 0110 1001. 0111 0100)BCD
表B1101 常用BCD編碼表
編碼類型
8421碼
十進制數
0
1
2
3
4
5
6
7
8
9
權
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
8421
0000
0001
0010
0011
0100
1000
1001
1010
1011
1100
5421
0000
0001
0010
0011
0100
0101
0110
0111
1110
1111
2421
0000
0001
0100
0101
0111
1000
1001
1100
1101
1111
5211
0000
0100
0101
0110
0111
1000
1001
1010
1011
1100
5421碼 2421碼 5211碼 余3碼
BCD碼轉化
結識BCD編碼
BCD編碼是一種數字壓縮存儲編碼,大家都知道一個字節有8個位,而數字0到9最多只需要使用4個位,假如用一個字節來存儲一個數字相對就會有一定的浪費,特別是在傳輸過程中,由此人們就想出了壓縮的辦法,于是BCD編碼就產生了。
BCD編碼將一個字節的8個位拆提成高4位和低4位兩個部分,也就是說一個字節能存儲兩個數字。所以BCD的編碼過程就是將數字壓縮的過程,將兩個字節的數字壓縮成一個字節。反之,解碼就是把一個字節的數字拆分為兩個數字單獨存放(大部分的解決都是按字節解決的)。
示例:
編碼過程,將數字69進行BCD編碼(注:BCD編碼低位在前,后面將不再注釋)。
1. 將6,9分別轉換成二進制表達:6(00000110)9(00001001),大家可以看到,最大的數字9也只要4個位,在傳輸過程中白白浪費了4個位;
2.將69合并為一個字節,分別取6,9二進制編碼的低4位,按照低位在前的原則,將9的低四位放前面6的低四位放后面得出新的字節二進制編碼是10010110;
3.完畢編碼過程,69的BCD編碼結果為10010110。
解碼過程:將69的BCD碼10010110進行解碼。
1.將10010110的高4位與低4位拆分開,得到兩個二進制數1001和0110;
2.分別將1001和0110的前面補充4位0000得到兩個8位的二進制數00001001,00000110; 3.由于編碼時低位在前,所以我們將兩個二進制數編排順序為00000110 ;
4.將二進制數轉換為十進制得出解碼結果為69(對的解碼)。
PB中如何對BCD碼進行解碼
大家知道在PB中有二進制類型的變量blob,但要無法按位操作,那么我們如何進行BCD編碼的數字進行解碼呢?
我想大家都會不約而同的想到ASCII碼,沒錯,就是她。ASCII就是數字和字符在計算機中存儲的的值,她在PB中給我們呈現的并不是01組成的二進制數而是十進制數值。
BCD解碼需要將一個字節的高4位和低4位進行拆分,那么我們怎么來使用十進制的ASCII編碼做到呢?
由于PB不提供位運算所以我們只能自己寫函數來做些簡樸的解決了,那又如何解決呢?
方法一:我們寫函數將十進制的ASCII(單字節)轉化為二進制的字符串,當然,如此一來你還要寫一個將二進制字符串轉換為10進制數字的函數,有愛好的朋友可以嘗試一下。
方法二:在我上次寫的內容中已經提到了,就是借助十六進制來完畢轉換。大家仔細研究不難發現十六進制表達等同于將一個字節的內容高4位和低4位分別轉換為十進制,假如不信你可以自己驗算一下。這樣我們就只需要寫一個轉換函數了,將十進制數轉換為十六進制字符串。轉換后將十六串的兩個字符位置對換(由于編碼的時候低位在前),然后直接將這個串強制轉換為數值型就得到了解碼后的數值。(注:后面有一轉換函數是網上一網友所寫)
有了解碼方法我們在讀BCD碼的地磅數據的時候就很容易解決了,由于我上次寫過解決過程這里我只簡樸描述一下:
1.用二進制類型blob將串口(現在有的用usb口)的數據讀出來;
2.將blob強制轉換為string,這樣就把二進制流按8位存儲格式編碼了,也就是說BCD碼在這個string中,但是是壓縮格式; 3.將string的每個字節都分割開來,然后分別譯為ASCII編碼,PB中有函數ASC;
4.根據具體設備出廠參數辨認string中狀態位,校驗位,數字位等的位置;
5.找到數字位進行BCD解碼,方法如上;
6.完畢解碼,得到稱量數據。
本文發布于:2023-12-14 11:43:06,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1702525386246189.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:BCD碼進制轉進制表格工具說明.doc
本文 PDF 下載地址:BCD碼進制轉進制表格工具說明.pdf
| 留言與評論(共有 0 條評論) |