数制与编码

学习途径:

  • 欧阳星明、华中科技大学出版社 《数字逻辑》

数制与转换

广义的说,一种进位数制包含着基数和位权两个基本要素:

  • 基数:是指计数制中所用到的数字符号的个数。基数为 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 码余三码
0000000000011
1000100010100
2001000100101
3001100110110
4010001000111
5010110111000
6011011001001
7011111011010
8100011101011
9100111111100
  • 对于 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 位二进制码典型格雷码
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100
810001100
910011101
1010101111
1110111110
1211001010
1311011011
1411101001
1511111000

奇偶校验码(Parity Check Code):一种能检测出错误的代码。

奇检验码使总体的 1 比特位数为奇数,即:$$Code_{奇检验}(n) = \begin{cases} 1, Bit1Amout(n) \in {偶数} \ 0, Bit1Amout(n) \in {奇数}\end{cases}$$,偶检验码同理

下表为 8421 码对应的就检验码:

十进制数码8421 码信息位奇检验检验位偶检验检验位
0000010
1000101
2001001
3001110
4010001
5010110
6011010
7011101
8100001
9100110