2.1 进位计数制与数据编码
二、八、十、十六进制及其转换,BCD 码,ASCII 码与汉字编码,以及真值与机器数的概念。
进位计数制
在计算机系统中,常用的进位计数制有二进制、八进制、十进制、十六进制。一个 进制数 的数值为
其中 称为基数, 称为第 位的位权。计算机采用二进制的原因:① 二进制只有两种状态,使用有两个稳定状态的物理器件就可以表示二进制数的每一位;② 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 或用作奇偶校验位)。其中编码值 0
31 和 127 为控制字符,32126 为可印刷字符。规律:数字 ‘0''9’ 为 30H39H(4857),大写字母 ‘A'90),小写字母 ‘a''Z’ 为 41H5AH(65'z’ 为 61H7AH(97~122);大小写字母相差 20H(32)。 - 汉字编码:GB 2312 采用两个字节表示一个汉字(区位码 → 国标码 = 区位码 + 2020H → 汉字内码 = 国标码 + 8080H)。汉字的输入码(拼音、五笔)用于输入,机内码用于存储与处理,字形码(点阵或矢量)用于显示与打印。
- Unicode:统一编码字符集,UTF-8 采用变长编码(1~4 字节),兼容 ASCII。
- 字符串:在主存中连续存放,每个字符占一个字节(ASCII),通常以
'\0'(00H)结尾。多字节数据在主存中的存放顺序涉及大端、小端的问题(见下一课)。
即时练习
即时练习4 题
点击选项即可作答
- 1下列各种数制的数中,最小的数是( )。
- 2十进制数 0.6875 对应的二进制数是( )。
- 3字符 'a' 的 ASCII 码为 61H,则字符 'd' 的 ASCII 码的十进制值为( )。
- 4用 8421 BCD 码表示十进制数 369,正确的是( )。
学完了吗?
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。