编码:采用少量的
基本符号
,选用一定的组合规则
,来表示大量复杂多样的信息。
1 进制及转换
-
常用进位计数制:二进制(B)、八进制(O)、十进制(D)、十六进制(H)
-
共同特点:
-
固定的符号集:
r
进制,只用r
个基本符号表示数值- 🌰:十进制的符号集 0~9,二进制的符号集 0、1
-
使用位置表示法:处于不同位置的数符,根据所在位置的
权值
而代表不同的值-
r 进制的
位权
是基数 r 的某次幂 -
🌰:123.45 = 1x102 + 2x101 + 3x100 + 4x10-1 + 5x10-2
-
-
r 进制转十进制
将 r
进制数的每一位数乘以它的权,然后相加,得对应十进制数:
十进制转 r 进制
- 十进制转二进制:整数除 2 取余 + 小数乘 2 取整
- 十进制转八进制:整数除 8 取余 + 小数乘 8 取整
- 十进制转十六进制:整数除 16 取余 + 小数乘 16 取整
注意整数部分从后往前取余:
二进制转 r 进制
-
二进制转八进制:从小数点起,每
3
位分为一组,每组转为等值八进制数,按顺序排列-
不足 3 位,整数侧左边补 0,小数侧右边补 0
-
🌰: 1001011.1011 B = 001 001 011.101 100 B = 113.54 O
-
-
二进制转十六进制:从小数点起,每
4
位分为一组,每组转为等值十六进制数,按顺序排列-
不足 4 位,整数侧左边补 0,小数侧右边补 0
-
🌰: 1001011.111 B = 0100 1011.1110 B = 4B.E H
-
2 逻辑运算
- 与(&&、 *、 ∩ 、 ∧、 AND) ,逻辑乘:A·B,在 A 与 B 都
真
时为真
,否则为假
- 或(||、 +、 ∪ 、 ∨、 OR) ,逻辑加:A+B,在 A 与 B 都
假
时为假
,其他情况为真
- 非(! 、 ﹃、 ~、 NOT),求反运算
- 异或(⊕ 、 XOR),半加运算:A ⊕ B,当且仅当 A 和 B 的值不同时为
真
常用逻辑公式
3 机器数与码制
机器数:各种数据在计算机中表现的形式。
特点:采用
二进制
计数制,数的符号用0、1表示,小数点隐含表示不占位置。真值:机器数的实际数值。
机器字长:若字长为 n,则采用 n 个二进制位表示数据。
- 带符号数
- 机器数的最高位是表示正、负的符号位,其余位表示数值
- 小数点在最低数值位之后为纯整数;小数点在最高数值位之前(符号位之后)为纯小数
- 无符号数:数的全部二进制位均代表数值,没有符号位
带符号机器数的编码方法
-
原码:数值 X 的原码记为 [X]原
- 机器字长为 n,最高位 0 表示正号,1 表示负号,其余 n-1 位表示数值的绝对值
- 若机器字长 n=8:
- [-0]原=10000000
- [+1]原=00000001, [-1]原=10000001
- [+0.5]原=0◊1000000, [-0.5]原=1◊1000000
-
反码:数值 X 的反码记为 [X]反
- 机器字长为 n,最高位 0 表示正号,1 表示负号,其余 n-1 位表示数值的绝对值
- 正数的反码与原码相同,负数的反码是其绝对值按位求反
- 若机器字长 n=8:
- [-0]反=11111111
- [+1]反=00000001, [-1]反=11111110
- [+0.5]反=0◊1000000, [-0.5]反=1◊0111111
-
补码:数值 X 的补码记为 [X]补
-
机器字长为 n,最高位 0 表示正号,1 表示负号,其余 n-1 位表示数值的绝对值
-
例外:当符号位为 1,而数值位全部为 0 时,表示整数 -2n-1,此时符号位的 1 既表示负数又表示数值
- 8 位字长表示补码最小整数是 -128,即 -27,用 10000000 表示
-
由于符号位可以表示数值,很难直接判断补码的真值大小
-
-
正数的补码与其反码、原码相同,负数的补码等于其反码的末尾加 1
-
若机器字长 n=8:
- [-0]补=00000000,补码中 0 有唯一的编码,正负表示一致
- [+1]补=00000001, [-1]补=11111111
- [+0.5]补=0◊1000000, [-0.5]补=1◊1000000
-
-
移码:数值 X 的移码记为 [X]移
- 在数 X 上增加一个偏移量,常用于表示浮点数的
阶码
- 机器字长为 n,偏移量为 2n-1,将补码的符号位取反即为对应的移码
- 码值大则对应的真值就大
- 若机器字长 n=8:
- [+0]移=10000000, [-0]移=10000000,移码中 0 有唯一的编码,正负表示一致
- [+1]移=10000001, [-1]移=01111111
- [+0.5]移=1◊1000000, [-0.5]移=0◊1000000
- 在数 X 上增加一个偏移量,常用于表示浮点数的
4 定点数与浮点数
定点数
-
表示数据时小数点的位置固定不变:
-
定点整数:纯整数,小数点固定在最低有效数值位之后(最高位是符号位)
-
定点小数:纯小数,小数点固定在最高有效位之前,整数位用于表示符号
-
-
在 n 位二进制表示下,定点整数:
-
原码、 反码表示的数据范围: -(2n-1-1) ~ + (2n-1-1),0 的表示占用了两个编码
-
补码、 移码表示的数据范围: -2n-1 ~ +(2n-1-1)
-
-
定点数所能表示的数值范围较小,运算时容易溢出
浮点数
-
小数点的位置不固定,能表示更大范围的数
-
浮点表示法:
- 计算机中,浮点数 N 通常分为
阶码
(E) 和尾数
(F) 两部分组成: - 阶码为带符号的纯整数,尾数为带符号的纯小数
- N = (数符 x F) x 2阶符 x E
- 11100.101 = 0.11100101 x 20101
- 计算机中,浮点数 N 通常分为
-
小数点位置改变后对应的阶码也相应改变,可以由多种浮点形式表示同一个数
-
数值范围主要由阶码决定,所表示数值的精度由尾数决定
-
浮点数运算
-
计算机中只设加法器,减法运算转换为加法运算来实现
-
补码减运算的方式比原码减运算简便得多
-
只有当两个同符号数相加(或异符号数相减)时,运算结果才有可能溢出
-
浮点加减先进行对阶,把阶码小的数的尾数右移阶码差的位数
-
5 常用的字符编码
- BCD 码(8421BCD 码)
- 每位十进制数用 4 位二进制数表示,0000 ~ 1001 表示 0 ~ 9
- ASCII 码
- 用 7 位二进制位表示一个字符,低 4 位用作行编码,高 3 位用作列编码
- 典型 ASCII 对应:0
9: 4857,AZ: 6590,az: 97122
- 典型 ASCII 对应:0
- 最多可以表示 128 个字符,编码为 0~127:
- 10 个数字符,52 个大小写英文字母,32 个标点符号和运算符,34 个控制符
- 用 7 位二进制位表示一个字符,低 4 位用作行编码,高 3 位用作列编码
- 汉字字符编码:先对汉字进行编码,转换为若干位二进制数
- 输入码:数字码、拼音码、字形码(五笔)
- 内部码(机内码):汉字在设备和信息处理系统内部存储、处理、传输用的代码
- 国标码:国家标准局 GB2312-1980 中规定的汉字机内码,是其他汉字编码的基础
- 字形码(输出码):表示汉字字形的字模数据
- 点阵方式:编码存储简单,字形放大后产生的效果差
- 矢量函数方式:将汉字看作由笔画组成的图形,提取每个笔画的坐标
- Unicode:容纳世界上所有文字和符号的字符编码标准,包括字符集、编码方案等
6 校验码
确保数据在计算机各个部件间进行交换的传送过程中正确无误,使用校验码来检测是否出错;
对数据可能出现的编码分为两类:
- 合法编码,用于传送数据
- 错误编码,不允许在数据中出现的编码,数据在传送过程中出错就会变成错误编码
码距
:一个编码系统中任意两个合法编码之间至少有多少个二进制位不同
奇偶校验码
- 通过增加一位校验位使得编码中
1
的个数恒为奇数或偶数进行检错,使码距变为 2- 是一种检错码,可检查 1 位的错误,不可纠错
- 由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码
- 奇校验:整个校验码(有效信息位和校验位)中“1” 的个数为奇数
- 偶校验:整个校验码(有效信息位和校验位)中“1” 的个数为偶数
- 3种方式:
- 水平奇偶校验码:信息位与校验位出于同一行
- 垂直奇偶校验码:把数据分为若干组,一组数据占一行排列整齐,再加一行校验码;信息位与校验位出于同一列
- 水平垂直校验码:在垂直校验码的基础上,对每行数据在增加一位水平校验位
海明码(8421 码)
- 在 n 个数据位之间插入 k 个校验码,通过扩大码距来实现检错和纠错,也利用了奇偶性
- k 的个数应满足公式:2k - 1 >= n + k
- 校验位一般设置在 2i 位置,如 1、2、4、8 等
- 多用于多位并行数据检错纠错处理
循环冗余校验码(CRC)
- 利用生成多项式为 k 个数据位产生 r 个校验位进行编码,长度为 k + r
- 多用于数据通信领域和磁介质存储系统中
- 左边为信息码(数据),右边为校验码
- 信息码占 k 位,校验码占 n-k 位,又称(n, k)码
- 校验码位数越长,校验能力越强
- 采用模 2 运算:按位运算,不发生借位和进位