跳去內容

二進制編碼十進制

出自維基百科,自由嘅百科全書

二進制編碼十進制[註 1]英文binary-coded decimal),簡稱 BCD,係一種喺二進制框架下表示十進制數字嘅方法。方法係所有十六進制(24 進)下可以理解成十進制嘅數字全部理解成十進制[1][2],其他唔可以理解成十進制嘅數值唔用[1];例如十六進制嘅 10(一零,正常數值十六)代表十、十六進制嘅 38(三八,正常數值五十六)代表卅八等等。

BCD 有兩個明顯嘅缺點:一係嘥位,其次係慢[3];喺機械語言,用 BCD 做運算可能會好麻煩,但係有啲處理器有特別嘅指令或者其他機制處理[4][5]

變體

[編輯]

Unpacked BCD

[編輯]

BCD 字面上只係話要喺二進制框架之下,冇話一定要用四個位元;有啲處理器會可以用成個位元組嚟表示一個十進制數字,叫 「分拆式二進制編碼十進制」[暫譯]unpacked BCD),之前講嘅方法就叫 「包裹式二進制編碼十進制」[暫譯]packed BCD[6][7];例如十六進制嘅 01 00(零一零零,即係兩個位元組 1、0,假設次序係高位元組、低位元組,正常數值係二百五十六)代表十、十六進制嘅 03 08(零三零八,即係兩個位元組 3、8,正常數值七百七十六)代表卅八等等。

如果一個位元組有 n 個位元(n 通常係 8),呢個做法可以理解成用 2n 進制表示十進制數字。

2421 碼

[編輯]

之前最初定義嘅 BCD 喺電機工程(同電腦科學討論低層次嘅細節嗰陣)又叫 8421 碼[8],意思係由左到右嘅位元 3、2、1、0 分別代表 8、4、2、1,亦即係數學上嘅正常定義。如果位元 3 唔係代表 8 而係代表 2,就可以得出第個表示方法;喺電機工程,用呢種方法嘅其中一種特定編碼叫 2421 碼[8]

除咗 2421 碼之外,電機工程亦有 Excess-3 同 Gray 另外兩種碼,都係用嚟表示十進制數字[8]

[編輯]

參考資料

[編輯]
  1. 1.0 1.1 Zaks (1980), p. 27
  2. Roland & Langer (2013), p. 4
  3. Zaks (1980), p. 29
  4. Zaks (1980), p. 64–68
  5. Dandamudi (1998), pp. 8–10
  6. Zaks (1980), p. 28
  7. Dandamudi (1998), p. 3
  8. 8.0 8.1 8.2 Sachdev (n.d.), p. 15

參考書目

[編輯]
  • 科技教育組 (2023年1月)。學資訊及通訊科技科常用英漢辭彙 (PDF) (香港中文)。香港特別行政區政府教育局課程發展處。喺2023年10月30號搵到
  • Dandamudi, S. (1998). "ASCII and BCD Arithmetic" (PDF) (加拿大英文). 卡爾頓大學. 喺2024年9月6號搵到.
  • Roland, Michael; Langer, Josef (2013). Cloning Credit Cards: A combined pre-play and downgrade attack on EMV Contactless (PDF). 7th USENIX Workshop on Offensive Technologies (WOOT ’13) (美國英文). Washington, DC. 喺2024年9月6號搵到.
  • Sachdev, M. (n.d.). "Number System" (PDF) (加拿大英文). 滑鐵盧大學. 喺2024年9月6號搵到.
  • Zaks, Rodnay (1980). Programming the 6502 (美國英文) (第3版). Berkeley, CA: Sybex.