目录
. 数据的表示和运算
2. 1 进位进数制
2.1.1 什么是十进制
1. 像9、7、5这样的符号所在的位置表示权重,而9、7、5表示权值
2.1.2 不同进制的表示范围
2.1.3 任何进制 转 十进制
可以通过记忆2的n次方的所有值,快速得到二进制和十进制的转换
2.1.4 采用二进制作为计算机的表示原因
① 可使用两个稳定状态的物理器件表示
② 0,1正好对应逻辑值假、真。方便实现逻辑运算
③ 可很方便地使用逻辑门电路实现算术运算
2.1.5 二进制 和 八进制、十六进制的转换
2.1.6 十进制 转换到 任意进制
1.整数部分,除基取余,从下到上
2、小数部分,乘基取整,从上到下
2.1.7 十进制转二进制(建议使用拼凑法)
260.75 = 256 + 4 + 0.5 + 0.25 = 100000100.11
533.125 = 512 + 16 + 4 + 1 + 0.125 = 1000010001.001
2.1.8 真值与机器数
真值:符合人类习惯的数字
机器数: 数字实际存到机器里的形式,正负号需要被“数字化”
3. BCD码
3.1 概念
BCD : Binary-Coded Decimal,用二进制编码的十进制
3.2 8421码
十进制与二进制的快速映射
0 - 9 有数据表示,但会出现6位冗余。
因此1010 - 1111 是没有数据对应的,那么只要是相加出现这个范围内的数。就应该加6进行修正。
3.3 余3码
余3码 = 8421码 +
余3码 -> 无权码
3.4 2421码
2、4、2、1分别对应每一位的权值
表示0~4时最高位为0,表示5~9时最高位为1
4. 字符与字符串
计算机内存储数字、字母和符号共有128个字符,这些字符刚好是2的7次方个二进制可以编码。但是为了存入计算机内,通常要在最高位补0,凑足1B,因为1字节=8比特
4.1 ASCII码
注意记忆重要的ASCII码
其中 32到126是可印刷字符,其余为控制字符或通信字符
4.2 汉字的表示和编码
1. 区位码
用93行93列的表格来存储这些部分常用中文汉字。 (0~93)
如果我们把开始位置加32,则从32到125. 就形成了区位码
但是还是有问题,如果是32到126这些字符和ASCII码又无法区分
则再加上128,即160~253,这样就不会和ASCII码矛盾了
因此形成了汉字机内码
2. 汉字机内码
4.3 字符串
5. 奇偶校验码
5.1 校验原理
1.某种因素导致传输的信息中的某个1变为0,或者0变为1。使得数据改变。
2.我们想到在数据前面加一个0或者1来作为校验位。那么还是四种ABCD字符,就有3bit来保存信息。
3.就会产生4种冗余状态,只要数据变成了这四种中任意一种,就检验出来它发生了改变。
4. 这就是校验的原理。
5.2 概念
由若干组代码组成的一个字叫码字。(如上图的,00,01,10,11)
将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离。
一种编码方案可能有若千个合法码字,各合法码字间的最小距离称为“码距”
码距为d
当d=1时,无检错能力;当d=2时, 有检错能力;当d=3时, 若设计合理,可能具有检错、纠错能力
5.3 奇偶校验码
奇校验码: 整个校验码(有效信息位和校验位)中“1”的个数为 奇数。
偶校验码: 整个校验码(有效信息位和校验位)中“1”的个数为 偶数。
6. 海明校验码
6.1 求解海明码的步骤
6.1.1 确定海明码的位数
6.1.2 确定校验位的分布位置
校验位的下标i,放在位置,相当于
6.1.3 求校验位的值 与纠错
6.2 那如果有两个比特位跳变呢?
7. 循环冗余校验码(CRC)
7.1 循环冗余校验码的基本思想
7.2 求循环冗余码
7.3 模2除法实例
最终得到的001 余数就是校验位
因此最终循环冗余码为:
7.4 CRC的检错和纠错
双方已经约定好了生成多项式 / 除数 -> 1101
7.5 最终算得的余数和出错位没有必然关系
这个余数会发现,001和010有两个出错位对应,即当信息位超过一定限度时,没有纠错能力
这个一定限度是:
但实际传输信息时,至少上千的比特要传输。显然CRC码无法满足,所以我们通常说CRC码没有纠错能力。但实际上是有的。
针对检查和纠错能力:
8. 定点数的表示
无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。
8.1 无符号数的表示范围
8.2 有符号数的定点表示
1. 注:可用原码、反码、补码三种方式来表示定点整数和定点小数。还可用移码表示定点整数。
2. 若真值为x,则用[x]原、[x]反、[x]补、、[x]移分别表示真值所对应的原码、反码、补码、移码
8.3 原码
要注意,
定点整数的小数点在最后
定点小数的小数点在符号位后
真值 0 有 +0 和 -0 两种表现形式
8.4 反码
反码:
若符号位为0,则反码与原码相同
若符号位为1,则数值位全部取反
“反码”只是“原码”转变为“补码”的一个中间状态,实际中并没什么卵用
8.5 补码
补码:
正数的补码=原码
负数的补码=反码末位+1 (要考虑进位)将负数补码转回原码的方法相同:尾数取反,末位+1
8.6 移码
移码:补码的基础 上将符号位取反。
注意:移码只能用于表示整数
移码的作用
8.7 对比
原码和反码的真值0有两种表示
补码和移码的真值0只有一种表示
补码和移码可以多表示一一个负数
加快解题的技巧
知识回顾
表示范围总结
8.8 补码的作用
加减运算中,我们能否用加法代替减法?来降低硬件成本的开销
8.8.1 模运算的性质
模 - a的绝对值 = a的补数
8.8.2 数论中对于余数的定义
x=qm+r
8.8.3 例子
1. 补码可以将减法操作转变为加法
2. 执行加法,符号位一起参与运算