二進碼十進數(英語:Binary-Coded Decimal,簡稱BCD中国大陆BCD码二-十进制编码)是一種十进制數字編碼的形式。在這種編碼下,每个十进制数字用一串单独的二进制位元來儲存與表示。常见的有以4位元表示1个十进制数字,称为压缩的BCD码(compressed or packed);或者以8位元表示1个十进制数字,称为未压缩的BCD码(uncompressed or zoned)。

這種編碼技术,最常用於會計系統的設計裡,因為會計制度經常需要對很長的數字做準確的計算。相對於一般的浮點式記數法,採用BCD碼,既可保存數值的精確度,又可使電腦免除作浮點運算所耗費的時間。此外,對於其他需要高精確度的計算,BCD編碼亦很常用。

BCD码的主要优点是在机器格式与人可读的格式之间转换容易,以及十进制数值的高精度表示。BCD码的主要缺点是增加了实现算术运算的电路的复杂度,以及存储效率低。

常用BCD編碼方式

编辑

對應不同需求,各人亦開發了不同的編碼方法,以適應不同的需求。這些編碼,大致可以分成有權碼無權碼兩種:

  1. 有权码,如:8421(最常用)、2421、5421
  2. 无权码,如:餘3码、格雷码

8421码

编辑

8421码又称为BCD码,是十进制代码中最常用的一种。[1]在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的十进制数加起来就可以得到它所代表的十进制数码。因为代码中从左至右看每一位“1”分别代表数字“8”“4”“2”“1”,故得名8421码。其中每一位“1”代表的十进制数称为这一位的权。因为每位的权都是固定不变的,所以8421码是恒权码。

余3码

编辑

余3码是由8421码加上0011形成的一种无权码,由于它的每个字符编码比相应8421码多3,故称余3码。例如,十进制字符5的余3码等于5的8421码0101加上0011,即为1000。同样,余3码中也有6种状态0000,0001,0010,1101,1110和1111是不允许出现的。 余3码也是一种对9的自补代码,因而可给运算带来方便。其次,在将两个余3码表示的十进制数相加时,能正确产生进位信号,但对“和”必须修正。修正的方法是:如果有进位,则结果加3;如果无进位,则结果减3。 余3码与十进制之间的转换也是按位进行的,值得注意的是每位十进制数的编码都应余3。

2421码

编辑

2421码是一种有权码,权值由高到低分别为2、4、2、1,特点是大于等于5的4位二进制数中最高位为1,小于5的最高位为0。如5的2421码表示为1011而不是0101。

比較

编辑

以下為三種常見的BCD編碼的比較。

十進數 8421-BCD碼 餘3-BCD碼 2421-A碼
(M10 D C B A C3 C2 C1 C0 a3 a2 a1 a0
0 0 0 0 0 0 0 1 1 0 0 0 0
1 0 0 0 1 0 1 0 0 0 0 0 1
2 0 0 1 0 0 1 0 1 0 0 1 0
3 0 0 1 1 0 1 1 0 0 0 1 1
4 0 1 0 0 0 1 1 1 0 1 0 0
5 0 1 0 1 1 0 0 0 1 0 1 1
6 0 1 1 0 1 0 0 1 1 1 0 0
7 0 1 1 1 1 0 1 0 1 1 0 1
8 1 0 0 0 1 0 1 1 1 1 1 0
9 1 0 0 1 1 1 0 0 1 1 1 1

參見

编辑

外部連結

编辑

参考文献

编辑
  1. ^ Evans, David Silvester. Chapter Four: Ancillary Equipment: Output-drive and parity-check relays for digitizers. Digital Data: Their derivation and reduction for analysis and process control 1. London, UK: Hilger & Watts Ltd英语Hilger & Watts Ltd / Interscience Publishers. 1961-03: 46–64 [56–57] [2020-05-24].  (8+82 pages) (NB. The 4-bit 8421 BCD code with an extra parity bit applied as least significant bit to achieve odd parity of the resulting 5-bit code is also known as Ferranti code.)

📚 Artikel Terkait di Wikipedia

EBCDIC

EBCDIC(英語:Extended Binary Coded Decimal Interchange Code,擴增二进式十进交換碼),为IBM於1963年-1964年间推出的字元编码表,根据早期打孔机式的BCDIC(英语:BCD (character encoding))即一种二进化十进数(BCD,Binary Coded

十进制计算机

detailed description of decimal calculations, including explanation of binary-coded decimals and algorithms.) Schmid, Hermann. Decimal Computation 1 (reprint)

打孔卡

encoding))”(Binary Coded Decimal Information Code,BCDIC)。 1964年,IBM在BCDIC上又增加2个比特,形成了8比特的“扩充的二进制编码的十进制交换码”(Extended Binary Coded Decimal Information

IBM 5100

5100能远程传输和接受数据 。使得IBM 5100出现相同于IBM 2741通信終端和被设计用来通讯IBM 2741兼容机EBCD (Extended Binary Coded Decimal) 编码的起止模式。EBCD码类似于更常见的IBM EBCDIC编码,但不相同。 IBM系统杂志(1977)卷16第一部分第41页文章

计算 (计算机科学)

浮點數(Floating point) (單精度、雙精度等。) 定點數(Fixed point) 有理數 十進制 二進碼十進數(Binary-coded decimal, BCD) Excess-3 BCD (XS-3) 二五混合碼 表示法: 二進制 - 八進制 - 十進制 - 十六進制 (hex)

BCD

BCD可以指: 二進碼十進數(Binary-coded decimal),一種以二進制表示十進制數字的方式 啟動組態資料庫(Boot Configuration Data),啟動微軟Windows Vista及以後版本所需的配置數據 雙極性-CMOS-DMOS(Bipolar-CMOS-DMOS),一種BiCMOS半導體技術

Python

几里得除法,同样保证这个等式永远成立,但它的余数总是非负数。 Python对所有整数运算,使用任意精度算术。在decimal模块中的Decimal类,提供十进制浮点数(英语:Decimal floating point),具有用户可按需要而更改的缺省28个十进制有效数位精度,并有多种修约方式。在f

LISP

Unlike atomic symbols, numbers are not stored uniquely. For example, the decimal number 15 is represented as follows: .----.-.---. .--------------. | -1