1.5 几种常用的编码
一、十进制代码
为了用二进制代码表示十进制数的0-9这十个状态,二进制代码至少应当有4位。4位二进制代码一共有十六个(0000~1111),取其中哪十个以及如何与0-9相对应,有许多种方案。表1.5.1中列出了常见的几种十进制代码,它们的编码规则各不相同。
表1.5.1 几种常见的十进制代码
十进制数 | 8421码(BCD代码) | 余3码 | 2421码 | 5211码 | 余3循环码 |
---|---|---|---|---|---|
0 | 0000 | 0011 | 0000 | 0000 | 1010 |
1 | 0001 | 0100 | 0001 | 0001 | 1011 |
2 | 0010 | 0101 | 0010 | 0010 | 1100 |
3 | 0011 | 0110 | 0011 | 0011 | 1101 |
4 | 0100 | 0111 | 0100 | 0100 | 1110 |
5 | 0101 | 1000 | 1011 | 0101 | 1111 |
6 | 0110 | 1001 | 1100 | 0110 | 1000 |
7 | 0111 | 1010 | 1101 | 0111 | 1001 |
8 | 1000 | 1011 | 1110 | 1000 | 0000 |
9 | 1001 | 1100 | 1111 | 1001 | 0001 |
8421码(BCD代码)是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的1都代表一个固定数值,将每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位的1分别表示8、4、2、1,所以将这种代码称为8421码。每一位的1代表的十进制数称为这一位的权。8421码中每一位的权是固定不变的,它属于恒权代码。
余3码的编码规则与8421码不同,如果把每一个余3码看作4位二进制数,则它的数值要比它所表示的十进制数码多3,故而将这种代码称为余3码。余3码不是恒权代码,0和9、1和8、2和7、3和6、4和5的余3码互为反码,这对于求取对10的补码是很方便的。
2421码是一种恒权代码,它的0和9、1和8、2和7、3和6、4和5也互为反码,这个特点和余3码相仿。
5211码是另一种恒权代码。如果按8421码接成十进制计数器,则连续输入计数脉冲时,4个触发器输出脉冲对于计数脉冲的分频比从低位到高位依次为5:2:1:1。5211码每一位的权正好与8421码十进制计数器4个触发器输出脉冲的分频比相对应。这种对应关系在构成某些数字系统时很有用。
余3循环码是一种变权码,每一位的1在不同代码中并不代表固定的数值。它的主要特点是相邻的两个代码之间仅有一位的状态不同。
二、格雷码
格雷码(Gray Code)又称循环码。从表1.5.2的4位格雷码编码表中可以看出格雷码的构成方法,这就是每一位的状态变化都按一定的顺序循环。如果从0000开始,最右边一位的状态按0110顺序循环变化,右边第二位的状态按00111100顺序循环变化,右边第三位按0000111111110000顺序循环变化。可见,自右向左,每一位状态循环中连续的0、1数目增加一倍。由于4位格雷码只有16个,所以最左边一位的状态只有半个循环,即00000000111111。按照上述原则,我们就很容易得到更多位数的格雷码。
与普通的二进制代码相比,格雷码的最大优点就在于当它按照表1.5.2的编码顺序依次变化时,相邻两个代码之间只有一位发生变化。这样在代码转换的过程中就不会产生过渡“噪声”。而在普通二进制代码的转换过程中,则有时会产生过渡噪声。例如,第四行的二进制代码0011转换为第五行的0100过程中,如果最右边一位的变化比其他两位的变化慢,就会在一个极短的瞬间出现0101状态,这个状态将成为转换过程中出现的噪声。而在第四行的格雷码0010向第五行的0110转换过程中则不会出现过渡噪声。这种过渡噪声在有些情况下甚至会影响电路的正常工作,这时就必须采取措施加以避免。
表1.5.2 4位格雷码与二进制代码的比较
编码顺序 | 二进制代码 | 格雷码 |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 0100 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 | 1111 |
11 | 1011 | 1110 |
12 | 1100 | 1010 |
13 | 1101 | 1011 |
14 | 1110 | 1001 |
15 | 1111 | 1000 |
十进制代码中的余3循环码就是取4位格雷码中的十个代码组成的,它仍然具有格雷码的优点,即两个相邻代码之间仅有一位不同。
三、美国信息交换标准代码 (ASCII)
美国信息交换标准代码(American Standard Code for Information Interchange,简称ASCII码)是由美国国家标准化协会(ANSI)制定的一种信息代码,广泛地用于计算机和通信领域中。ASCII码已经由国际标准化组织(ISO)认定为国际通用的标准代码。
ASCII码是一组7位二进制代码(b₇b₆b₅b₄b₃b₂b₁),共128个,其中包括表示0-9的十个代码,表示大、小写英文字母的52个代码,32个表示各种符号的代码以及34个控制码。表1.5.3是ASCII码的编码表,每个控制码在计算机操作中的含义列于表1.5.4中。
表1.5.3 美国信息交换标准代码 (ASCII码) (续)
b₇b₆b₅b₄ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
000 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
001 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
010 | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
011 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
100 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
101 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
110 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
111 | p | q | r | s | t | u | v | w | x | y | z | { | } | ~ |
表1.5.4 ASCII码中控制码的含义
代码 | 含义 |
---|---|
NUL | Null (空字符) |
SOH | Start of Header (标题开始) |
STX | Start of Text (正文开始) |
ETX | End of Text (文本结束) |
EOT | End of Transmission (传输结束) |
ENQ | Enquiry (请求) |
ACK | Acknowledge (确认) |
BEL | Bell (响铃) |
BS | Backspace (退格) |
HT | Horizontal Tab (水平制表) |
LF | Line Feed (换行) |
VT | Vertical Tab (垂直制表) |
FF | Form Feed (换页) |
CR | Carriage Return (回车) |
SO | Shift Out (移出) |
SI | Shift In (移入) |
DLE | Data Link Escape (数据链路转义) |
DC1 | Device Control 1 (设备控制1) |
DC2 | Device Control 2 (设备控制2) |
DC3 | Device Control 3 (设备控制3) |
DC4 | Device Control 4 (设备控制4) |
NAK | Negative Acknowledge (否定确认) |
SYN | Synchronous Idle (同步空闲) |
ETB | End of Transmission Block (传输块结束) |
CAN | Cancel (取消) |
EM | End of Medium (介质结束) |
SUB | Substitute (替换) |
ESC | Escape (转义) |
FS | File Separator (文件分隔符) |
GS | Group Separator (组分隔符) |
RS | Record Separator (记录分隔符) |
US | Unit Separator (单元分隔符) |
SP | Space (空格) |
DEL | Delete (删除) |
通过这些编码,计算机和通信系统可以更高效地处理、存储和传输信息。ASCII码已经成为计算机和通信领域中使用最广泛的标准代码之一。
总结
以上介绍了几种常见的编码方式,包括十进制代码、格雷码和ASCII码。每种编码方式都有其独特的应用场景和优点。例如,8421码广泛用于十进制数表示,格雷码在减少过渡噪声方面具有优势,而ASCII码是计算机和通信领域中的通用标准。这些编码方法为数据处理和信息交换提供了重要的基础。