2.1.1 进位计数法
2.1.2 进制转换
任意进制转十进制
十进制转任意进制
整数情况(除基,取余法)
小数情况(乘基,取整法)
2的n次方 进制之间的转换
真值和机器数
2.1.3 BCD码
2.1.4 字符
ASCII 码
字符串
汉字的表示和编码
2.1.5 奇偶校验
校验原理
奇偶校验
2.1.6 海明码
海明校验码思路简介
海明码求解步骤
2.1.7 循环冗余校验码
2.2.1 无符号数及原码
无符号数
无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值
有符号数
定点数
原码
PS:下面的 n 是不包括符号位的
为什么原码不适合做加/减法?
答案:如果计算机内部采用原码表示数,那么在进行加法和减法运算的时候,最终都转化为两个绝对值的加运算和减运算,因此,在设计计算器的时候就既需要设计加法运算器,又要设计减法运算器(代价有点大,是否可以就用一种类型的运算器呢? 其实大多数人都喜欢做加法运算,不太喜欢用减法运算)。于是就出现了补码,用补码进行加减运算是很方便的。
2.2.2 补码,反码,移码
补码
7点顺时针拨动1格表示的是:7+1=8
7点逆时针拨动1格表示的是:7-1=6
7点顺时针拨动11格表示的是:7+11=6
由时钟启发,发现 只要找到一个 “模” ,就可以在加减法之间互相转换。
通过这个模,最后发明了补码,通过补码就可以将减法变成加法运算。
求补 和 求补码不一样的。
反码
移码
2.2.3 移位运算
十进制的移位
二进制无符号数的移位 – 逻辑移位
二进制有符号数移位 – 算术移位
原码情况
反码 和 补码情况
循环移位(了解即可)
把移出去的数字补回空缺的位置
2.2.4 加减运算和溢出判断更换 - 定点数
定点数的加减法
基本思路:
- 转换成 x + y 的形式
- 计算[x]补 + [y]补([x + y]补 = [x]补 + [y]补)
- 即使是减法,也要转换为加法 [x]补 + [-y]补 (假设y是负数,对负数做求补运算)
例题:
溢出
承接上一题
溢出原因
判断是否溢出
方法一:
方法二:
方法三:
2.2.5 定点数的乘法运算
原码一位乘法
补码一位乘法
2.2.6 强制类型转换(不做记录)
2.2.7 除法预备知识
人为的做法
原码恢复余数法(原码加减交替法)
第一步永远是减法,如果相减的结果为负数,表示不够减,商0,需要加回来,如果是正数,表示够减,商1,下一次需要先将结果左移,最低位补零,然后重复刚才的步骤。最后余数要恢复,因为余数左移了n次,余数需要乘以2的 -n 次方
2.2.8 原码除法与补码除法更换版
原码不恢复余数法
和原码恢复余数法类似,只不过有几个步骤不太一样。
补码加减交替法(不做记录)
2.3.1 浮点数的表示
浮点数的表示
求b的真值的时候出现问题,发现b有9位,但是只能用一个字节来表示b(不考虑扩位),那怎么办呢?
实际上b的尾数 0.0
1001 红色位置上的0存不存都无所谓,因为在数有效位数的时候是左起第一个不为0的数开始往后数,所以实际上b这个尾数的有效的数据是1001这四个。我们可以把阶码(指数)讲1,把这个0
存储到阶码中。
其实这就是浮点数的规格化
浮点数的规格化
原码情况下:要求尾数最高位为1
补码情况下:正数要求尾数最高位为1,负数要求尾数最高为0
特点
2.3.2 IEEE754标准
2.3.3 浮点数加减交替版
浮点数的加减运算
舍入处理
2.4.1 基本逻辑符号
算数逻辑单元
逻辑符号
2.4.2一位加法器设计(不必深究)
串行加法器
串行进行的并行加法器
可以看出,上面的方式并没有优化多少,仍然需要等待上一位的进位信息,我们通过观察公式,可以对电路进行优化,产生了并行进位的并行加法器
并行进位的并行加法器
多个4位CLA加法器