(1)BCD碼(二到十進位編碼) 人們通常習慣使用十進位數,而電腦內部多採用二進位表示和處理數值資料, 因此在電腦輸入和輸出資料時,就要進行由十進位到二進位的轉換處理。 把十進位數的每一位分別寫成二進位形式的編碼,稱為二進位編碼的十進位數, 即二到十進位編碼或BCD(Binary Coded Decimal)編碼。 BCD碼編碼方法很多,通常採用8421編碼,這種編碼方法最自然簡單。 其方法使用四位位元表示一位十進位數,從左至右每一位對應的權分別是 23、22、21、20,即8、4、2、1。例如十進位數1975的8421碼可以這樣得出 1975(D)=0001 1001 0111 0101(BCD) 用四位二進位表示一位十進位會多出6種狀態,這些多餘狀態代碼稱為BCD碼中的非法碼。 BCD碼與二進位之間的轉換不是直接進行的, 當需要將BCD碼轉換成二進位碼時,要先將BCD碼轉換成十進位碼,然後再轉換成二進位碼; 當需要將二進位轉換成BCD碼時,要先將二進位轉換成十進位碼,然後再轉換成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 000010001; C#版代碼實現: int x=97; ///要對整數97BCD編碼 byte m=(((byte)7)<<4)+(((byte)9)); //得到的m即為數字97和BCD碼位元組表現形式 string bs=""; bs=(((byte)(m<<4))>>4)).ToString()+"+"+(m>>4).ToString(); bs即為從BCD碼解得的字串