2.1 进位计数制与数据编码

二、八、十、十六进制及其转换,BCD 码,ASCII 码与汉字编码,以及真值与机器数的概念。

考查要求 ★★☆ 理解 进制转换8421 BCDASCII真值与机器数

进位计数制

在计算机系统中,常用的进位计数制有二进制、八进制、十进制、十六进制。一个 rr 进制数 KnKn−1⋯K0.K−1⋯K−mK_n K_{n-1} \cdots K_0 . K_{-1} \cdots K_{-m} 的数值为

Knrn+Kn−1rn−1+⋯+K0r0+K−1r−1+⋯+K−mr−m=∑i=−mnKiriK_n r^n + K_{n-1} r^{n-1} + \cdots + K_0 r^0 + K_{-1} r^{-1} + \cdots + K_{-m} r^{-m} = \sum_{i=-m}^{n} K_i r^i

其中 rr 称为基数,rir^i 称为第 ii 位的位权。计算机采用二进制的原因:① 二进制只有两种状态,使用有两个稳定状态的物理器件就可以表示二进制数的每一位;② 0 和 1 正好与逻辑值”假”和”真”对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件;③ 二进制的编码和运算规则都很简单。

不同进制之间的转换

  • 任意进制 → 十进制:按权展开相加。
  • 十进制 → 任意进制:整数部分除基取余(先得到的余数为低位);小数部分乘基取整(先得到的整数为高位)。
  • 二进制 ↔ 八进制 / 十六进制:以小数点为界,整数部分从右往左、小数部分从左往右,每 3 位(或 4 位)一组,不足时补 0。
交互演示进制转换:整数部分"除基取余",小数部分"乘基取整"
→
十进制值:25.6875
整数部分(从下往上读余数):
  • 25 ÷ 2 = 12 …… 1
  • 12 ÷ 2 = 6 …… 0
  • 6 ÷ 2 = 3 …… 0
  • 3 ÷ 2 = 1 …… 1
  • 1 ÷ 2 = 0 …… 1
小数部分(从上往下读整数):
  • 0.6875 × 2 = 1.375 → 取整 1
  • 0.375 × 2 = 0.75 → 取整 0
  • 0.75 × 2 = 1.5 → 取整 1
  • 0.5 × 2 = 1 → 取整 1
2 进制11001.1011
8 进制31.54
10 进制25.6875
16 进制19.B

二进制 ↔ 八进制:每 3 位一组;二进制 ↔ 十六进制:每 4 位一组(整数部分从右往左分组,小数部分从左往右分组)。

真值与机器数

在日常生活中,通常用正号、负号来分别表示正数(正号可省略)和负数,如 +15、−8 等。这种带”+“或”−“符号的数称为真值。在计算机中,通常采用数的符号和数值一起编码的方法来表示数据,常用的有原码、补码、反码、移码,这种把符号”数字化”的数称为机器数(详见下一课)。

BCD 码

二进制编码的十进制数(Binary-Coded Decimal,BCD)通常采用 4 位二进制数来表示一位十进制数中的 0~9 这 10 个数码。

编码规则特点
8421 码每位的权从高到低为 8、4、2、1有权码,最常用;1010~1111 共 6 个码为非法码
余 3 码在 8421 码的基础上加 3(0011)无权码
2421 码每位的权为 2、4、2、1有权码;大于等于 5 的数最高位为 1,小于 5 的最高位为 0

字符与字符串

  • ASCII 码:用 7 位二进制表示 128 个字符(通常占 1 字节,最高位为 0 或用作奇偶校验位)。其中编码值 031 和 127 为控制字符,32126 为可印刷字符。规律:数字 ‘0''9’ 为 30H39H(4857),大写字母 ‘A''Z’ 为 41H5AH(6590),小写字母 ‘a''z’ 为 61H7AH(97~122);大小写字母相差 20H(32)。
  • 汉字编码:GB 2312 采用两个字节表示一个汉字(区位码 → 国标码 = 区位码 + 2020H → 汉字内码 = 国标码 + 8080H)。汉字的输入码(拼音、五笔)用于输入,机内码用于存储与处理,字形码(点阵或矢量)用于显示与打印。
  • Unicode:统一编码字符集,UTF-8 采用变长编码(1~4 字节),兼容 ASCII。
  • 字符串:在主存中连续存放,每个字符占一个字节(ASCII),通常以 '\0'(00H)结尾。多字节数据在主存中的存放顺序涉及大端、小端的问题(见下一课)。

即时练习

即时练习4 题
点击选项即可作答
  1. 1
    下列各种数制的数中,最小的数是( )。
  2. 2
    十进制数 0.6875 对应的二进制数是( )。
  3. 3
    字符 'a' 的 ASCII 码为 61H,则字符 'd' 的 ASCII 码的十进制值为( )。
  4. 4
    用 8421 BCD 码表示十进制数 369,正确的是( )。
学完了吗?

标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。