編碼 | 解碼 | 十進位

> bcd | 十進位 | 二進位 <

// BCD - 二進位編碼十進位,用於精確的小數運算

0 字元
0 字元
[DECIMAL]

十進位精度

保留十進位精度,避免二進位浮點捨入誤差。

[4-BIT]

半位元組編碼

每個十進位數字都精確編碼為 4 位二進位(一个半位元組)。

[VARIANTS]

多種格式

支援 8421、2421、5421、Excess-3 和 Gray BCD 等編碼。

>> 技術說明

BCD 的工作原理:

BCD 將每個十進位數字(0–9)編碼為 4 位二進位。不同的 BCD 格式使用不同的位權:8421(標準加權)、2421(自補)、5421(五進位混合)、Excess-3(每位數字加 3),以及 Gray BCD(最小化相鄰數值之間的位翻轉)。壓縮 BCD 以每位元組儲存兩個數字,提高儲存效率。

BCD 格式範例:

十進位: 9 5 3

8421 BCD:  1001 0101 0011
2421 BCD:  1111 1011 0011
5421 BCD:  1100 1000 0011
Excess-3:  1100 1000 0110
Gray BCD:  1101 0111 0010

壓縮:     10010101 00110000
           (95)     (30)

為什麼要使用 BCD:

  • >需要精確十進位表示的金融運算
  • >數位顯示器與七段顯示解碼器
  • >即時鐘電路
  • >計算機與運算晶片
  • >PLC 與工業控制系統

>> 常見問題

什麼是 BCD?

BCD(二進位編碼十進位,Binary-Coded Decimal)是一種以二進位位元表示十進位數字的編碼方式,其中每個十進位數字都以 4 位二進位表示。適用於對十進位精度要求很高的情境。

為什麼使用 BCD 而不是二進位?

BCD 可以避免十進位計算中的捨入誤差,並且更容易直接對應到十進位顯示。非常適合金融等需要精確小數表示的應用。

什麼是壓縮 BCD?

壓縮 BCD(Packed BCD)在一個位元組(8 位)中儲存兩個十進位數字,每個半位元組代表一個數字。與每個數字使用完整一個位元組的非壓縮 BCD 相比更省空間。

常見的 BCD 格式有哪些?

常見的 BCD 格式包括:8421(標準加權)、2421(自補)、5421(五進位混合)、Excess-3(每位數字加 3)以及 Gray BCD(減少相鄰數值之間的位變化)。

// 速查表

Dec84212421Excess-3
0000000000011
1000100010100
2001000100101
3001100110110
4010001000111
5010110111000
6011011001001
7011111011010
8100011101011
9100111111100

// 程式碼範例

Decimal 25   BCD   0010 0101     (packed: 0x25)
             Binary 0001 1001     (0x19)
Decimal 1234 BCD   0001 0010 0011 0100  (2 bytes, packed)
Overhead     4 bits per digit vs log2(10) = 3.32 bits -> ~20% larger
Add          0x19 + 0x28 = 0x41 -> +6 correction per nibble > 9 -> 0x47

>> 更多問題

問:BCD 是什麼,與二進位有何不同?

答:BCD 用 4 位元分別編碼每個十進位數字。25 變為 0010 0101,而純二進位是 11001。十進位數值保持精確,也便於顯示。

問:什麼是壓縮 BCD 與非壓縮 BCD?

答:壓縮 BCD 每位元組存兩位數字(0x25 = 25)。非壓縮 BCD 每位數字占一個位元組,高半位元組為 0 或像 EBCDIC 那樣的區位標記。

問:為什麼現在還在使用 BCD?

答:用於需要無捨入誤差的精確十進位運算:金融系統、計算機、即時時鐘和 7 段顯示器。代價是每位 4 位元而非 3.32 位元,約多 20% 的空間。

其他語言