01.进位计数制
r进制计数法
任意进制转化为十进制
- 使用 乘法 和 基数 即可
- 对于比较长的位数的转化,可以先列出表再填入具体数值
二进制转化为八进制、十六进制
各种进制的常见书写方式
十进制转化为任意进制
- 要分为 整数部分 和 小数部分 分别求;整数部分用 除基取余法, 小数部分用 乘基取整法
十进制转化为二进制(拼凑法)
- 然后得到 八进制 或者 十六进制
真值和机器数
02.BCD码(大纲已删408考生可不看)
本节总览
BCD码
- 若相加结果在合法范围内,则无需修正
- 如果大于等于10(也就是说结果落在1010~1 0010的范围内),可以让计算结果+6(0110),这样的话,这四位数就可以向高位进一个1,剩下的部分刚好就是我们需要的个位的部分
- 余3码就是映射的每一个数都要+3,相比于8421码,它是一种无权码
- 对于2421码,也是一种有权码,且[0,4]这个范围内的数第一位必然是0,[5,9]这个范围内的数第一位必然是1
03.字符与字符串
ASCII码
- 控制字符:127的DEL表示delete
- 通信字符:6的ACK表示两台计算机进行通信时,第二台计算机回复ACK
- 数字字符:发现0~9的前四位相同,且后四位就是它们对应的8421码
- 大写字母:前三位相同,后五位转成十进制刚好是1~26,刚好26的英文字母
- 小写字母:同上
汉字的表示和编码
字符串
如果是带有 中文字符 的字符串:
04.奇偶校验码
校验原理简介
奇偶校验码
只有检错能力,且不能是偶数位错,只能奇数个错
奇偶校验的码距是2
05.海明校验码
海明校验码思路简介
海明码求解步骤
异或 相当于 偶校验
海明码求解步骤-格式变化
补充
06.循环冗余校验码(未补)
07.定点数的表示
定点数 v.s. 浮点数
本节总览
无符号数的表示
无符号数 就相当于 数的绝对值
有符号数的表示
有符号数的定点表示
这样,表达一个小数需要将整数部分和小数部分分别保存
尾数 :数值部分
定点表示中,无论是整数还是小数都有一个固定的隐含的小数点,用来确定位权
原码
反码
反码由原码直接转换过来,一一映射,因此反码整数与原码整数表示范围一样,同理小数也是
补码
在计算+0和-0的补码时(先由原码得到反码再得到补码),发现-0的补码由-0的反码+1后由于这里规定机器字长只有8bit,因此进位的1被隐藏,因此+0和-0的补码皆为0,0000000
这导致原码的表示的数的数量就比补码多了一个了(因为补码这里+0和-0重合),规定1,0000000表示 2 − 7 2^{-7} 2−7,这样,补码的表示范围就和原码反码不同了
同理,小数也是如此
将补码转回原码
移码
只有整数才有移码
移码是由补码直接转换过来,是一一映射的,因此表示范围相同
如果把移码看作 无符号数,也就是把它的符号位也当作尾数,会发现,随着真值增大,移码也增大,因此,方便比较大小
在之后的浮点数中,经常用到移码
用几种码表示定点整数
这里给出的只是 定点整数(毕竟小数没有移码
原码和反码都有两种真值0的状态,而补码和移码都只有一种真值0的状态,因此补码和移码可以表示更多一位的负数
练习
正数的原码反码移码相同,移码将符号位取反
负数的反码是将原码的数值位取反,符号位不变;负数的补码是在负数的反码末尾+1;负数的移码是从负数的补码符号位取反
由补码得到原码,先将数值位取反,然后再在末尾+1
技巧 :由一个数的补码得到这个数的相反数的补码
知识回顾
08.各种码的作用
加减运算
如果使用原码表示的有符号数,一个正数加上一个负数,得到的结果直接用真值表示是错误的,需要把一个正数加上一个负数 转换为 一个正数减去一个正数,但这样需要更多的硬件
我们想到能否能用加法代替减法呢?
用加法代替减法
模运算的性质
加减运算
补码 - 补数
比如 10001110要求补数,它的绝对值是00001110,要让它和另一个数相加得到100000000,将它本身取反得到11110001,它们相加为11111111,再加一个1就能得到100000000了,这就是由原码求补码的原理
88 - 66转换为88的原码加上-66的补码
这里最后结果相加时,由于这里规定机器字长为8bit,最高位溢出的1丢弃了,结果正好是22D
移码
而反码没什么用,只是原码转换成补码的中间状态
09.移位运算
知识总览
算数移位
原码的算数移位
反码的算数移位
补码的算数移位
算数移位
算数移位的应用举例
将 乘法运算 转换成 移位运算和加法运算
逻辑移位
逻辑移位的应用举例
循环移位
循环移位很适合高低位的调换
比如之前存储“啊”这个字符需要2B,有大端和小端两种方式存,可以循环左移或循环右移8位来进行高低字节的调换
这里的反码错了
10.加减运算和溢出判断
本节总览
原码的加减运算
补码的加减运算
溢出判断