Yi's Blog

《程序员教程(第三版)》学习笔记——02.BCD编码

2012-07-23

BCD编码

用4为二进制代码表示一位十进制数,成为二-十进制编码,简称BCD编码。因为2^4=16,而十进制数中只有0~9这10个数符,故有多种BCD编码。根据4为代码中的每一位是否有确定的权来划分,可分为有权码和无权码两类。

8421BCD码

8421码是应用最多的有权码,即4个二进制位的权从高到低分别为8,4,2,和1。

余3BCD码

余3码是在8421码的基础上,把每个数的代码加上0011后构成的。由于每一个码对应的8421BCD码之间相差3,故称为余3码。

格雷码

格雷码(Gray code),又叫循环二进制码或反射二进制码。格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式。

一般的,普通二进制码与格雷码可以按以下方法互相转换:

二进制码→格雷码(编码)

从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);

格雷码→二进制码(解码)

从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)。