学习途径:
- 欧阳星明、华中科技大学出版社 《数字逻辑》
数制与转换
广义的说,一种进位数制包含着基数和位权两个基本要素:
基数:是指计数制中所用到的数字符号的个数。基数为 R 的计数制称为 R 进位计数制,简称 R 进制。
位权:在一种进位计数制表示的数中,用来表示不同数位上数值大小的一个固定常数。
一般来说,一个 R 进制数 N 可以有以下两种表示方法:
- 并列表示法,又称为位置计数法,其表达式为:$$(N)R = (K{n-1}K_{n-2}…K_1K_0 . K_{-1}…K_{-m})_R$$
- 多项式表示法,又称按权展开法,其表达式为:$$\displaystyle (N)R = \sum{i=-m}^{n-1} K_iR^i$$
带符号二进制数的表示
原码
二进制小数 $$X = \pm 0.x_{-1}x_{-2}…x_{-m}$$,原码定义为:$$\displaystyle [X]_{原} = \begin{cases} X &, 0 \le X < 1 \ 1 - X &, -1 < X \le 0\end{cases}$$
二进制整数 $$X = \pm x_{n-1}x_{n-2}…x_0$$,原码定义为:$$\displaystyle [X]_{原} = \begin{cases} X &, 0 \le X < 2^n \ 2^n - X &, -2^n < X \le 0\end{cases}$$
反码
二进制小数 $$X = \pm 0.x_{-1}x_{-2}…x_{-m}$$,反码定义为:$$\displaystyle [X]_{反} = \begin{cases} X &, 0 \le X < 1 \ (2 - 2^{-m}) + X &, -1 < X \le 0\end{cases}$$
二进制整数 $$X = \pm x_{n-1}x_{n-2}…x_0$$,原码定义为:$$\displaystyle [X]_{反} = \begin{cases} X &, 0 \le X < 2^n \ 2^{n+1} - 1 + X &, -2^n < X \le 0\end{cases}$$
补码
二进制小数 $$X = \pm 0.x_{-1}x_{-2}…x_{-m}$$,补码定义为:$$\displaystyle [X]_{补} = \begin{cases} X &, 0 \le X < 1 \ 2 + X &, -1 \le X < 0\end{cases}$$
二进制整数 $$X = \pm x_{n-1}x_{n-2}…x_0$$,原码定义为:$$\displaystyle [X]_{补} = \begin{cases} X &, 0 \le X < 2^n \ 2^{n+1} + X &, -2^n \le X < 0\end{cases}$$
几种常用的编码
十进制数的二进制编码
BCD 码:二-十进制代码(Binary Coded Decimal)使用 4 位二进制代码对十进制数字符号进行编码。
常用的三种 BCD 码,表示表格如下:
十进制符号 | 8421 码 | 2421 码 | 余三码 |
---|---|---|---|
0 | 0000 | 0000 | 0011 |
1 | 0001 | 0001 | 0100 |
2 | 0010 | 0010 | 0101 |
3 | 0011 | 0011 | 0110 |
4 | 0100 | 0100 | 0111 |
5 | 0101 | 1011 | 1000 |
6 | 0110 | 1100 | 1001 |
7 | 0111 | 1101 | 1010 |
8 | 1000 | 1110 | 1011 |
9 | 1001 | 1111 | 1100 |
- 对于 2421 码:$$X = 2a_3 + 4a_2 + 2a_1 + a_0$$。其不具有单值性,因此不允许出现 $$0101 \sim 1010$$ 之间的数字。
可靠性编码
格雷码(Gray Code):任意两个相邻的数,其格雷码仅有一位不同。
格雷码可以从普通二进制数计算得到:
- 设二进制数 $$B = B_{n-1}B_{n-2}…B_0$$,其格雷码为 $$G = G_{n-1}G_{n-2}…G_0$$
- 用以下的关系可以由 B 推导 G:$$\displaystyle \begin{cases} G_{n-1} = B_{n-1} \ G_i = B_{i+1} \oplus B_i, 0 \le i \le n-2\end{cases}$$
典型格雷码对应表如下:
十进制数 | 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 |
奇偶校验码(Parity Check Code):一种能检测出错误的代码。
奇检验码使总体的 1 比特位数为奇数,即:$$Code_{奇检验}(n) = \begin{cases} 1, Bit1Amout(n) \in {偶数} \ 0, Bit1Amout(n) \in {奇数}\end{cases}$$,偶检验码同理
下表为 8421 码对应的就检验码:
十进制数码 | 8421 码信息位 | 奇检验检验位 | 偶检验检验位 |
---|---|---|---|
0 | 0000 | 1 | 0 |
1 | 0001 | 0 | 1 |
2 | 0010 | 0 | 1 |
3 | 0011 | 1 | 0 |
4 | 0100 | 0 | 1 |
5 | 0101 | 1 | 0 |
6 | 0110 | 1 | 0 |
7 | 0111 | 0 | 1 |
8 | 1000 | 0 | 1 |
9 | 1001 | 1 | 0 |