文章目录
1. 数制与编码
1.1 进制转换
注意:
1.2 BCD码
1.3 字符与字符串
1.4 校验码
1.4.1 奇偶校验(1位检错,不能纠错)
注意:
1.4.2 海明码(2位检错,1位纠错)
上述的海明码还不是实际的海明码,因为其只有一位检错的能力,实际上,海明码具有一位纠错,二位检错能力。是因为在其最高位还添加了一个校验位。如下图所示:
1.6 循环冗余码CRC(只能检错,纠错1位或多位由多项式决定)
注意:
2. 数的表示与运算
* 数的分类
1. 按小数点的位置分
1. 定点数:平时写的小数,如 6.3
2. 浮点数:科学计数法表示的小数,如 3.14×10^6
2. 按符号分
1. 无符号数
* 注意:通常只有无符号整数,没有无符号小数。
2. 有符号数
2.1 定点数的表示与运算
2.1.1 定点数的表示
无符号定点数很简单,这里不做说明。下面讨论有符号定点数的格式:
2.1.1.1 有符号定点数格式
注意:
- 定点整数和定点小数的默认小数点位置不一样。
- 有符号定点数的整数和小数部分是分开存放的,比如
19.12
,会分成19
和.12
分别单独存放。
2.1.1.2 数值的表示(原码、反码、补码、移码)
- 原码:真值的绝对值
- 反码:在原码的基础上,符号位不变,数值部分全部取反
- 补码:在反码的基础上+1
- 移码:在
补码
的基础上,将符号位取反。(为了方便比较数的大小)
注意:
注意:
- 补码与原码转换—利用小技巧分两种情况讨论
- 补码
后面全0
- 补码
后面至少一个1
X < 负数
时,需要注意补码特殊情况---全0
。对于X > 负数
不需要注意
2.1.2 定点数的运算
2.1.2.1 移位运算
2.1.2.1.1 算术移位(符号位不参与移位)
注意:
2.1.2.1.2 逻辑移位(符号位参与移位)
2.1.2.1.3 循环移位(符号位参与移位)
* 循环移位分类
1. 带进位标志位CF的循环移位
2. 不带带进位标志位CF的循环移位
2.1.2.2 加减运算
2.1.2.2.1 补码的加减
2.1.2.2.2 溢出的判断
注意:
2.1.2.2.3 空间扩展的填充的数值
注意:
2B
变为1B
是直接截取。
注意:无符号就是不看符号二进制数。这里的short是补码,故需要先转补码
2.1.2.3 乘法运算
2.1.2.3.1 原码的一位乘
注意:
- 初始值为
0拼上乘数
- 重复
+
、移
- 加完n次后,
再右移一次,因为第一次没有移位
- 截取
2*n
位
2.1.2.3.2 补码的一位乘
补码一位乘和原码一位乘非常类似,只需要注意如下几个区别就行:
注意:
- 符号位参与运算,故为
0拼接带符号的乘数
,辅助位为0
辅助位 - MQ
最低位判断加减 —–> 移位- 多加一次,但不移位。(因为符号位参与了运算)
- 截取结果
2*n
位
2.1.2.3.3 小结
2.1.2.4 除法运算
注意:
2.1.3 数据的存储与排列
数据的存储有两种模式:
- 大端模式:低位字节存放在高地址处
- 小端模式:低位字节存放在低地址处
注意:
2.3 浮点数的表示与运算
2.3.1 浮点数的表示
2.3.1.1 浮点数格式
注意:
- 采用浮点数目的:在位数不变的情况下,扩大数的表示范围
- 如果总的位数不变,我们将尾数的位数变小,阶码的位数相应的会变大,则数的表示范围会变大,但是数的精度会降低。
基数
:指几进制数。
2.3.1.2 浮点数的规格化
- 采用
浮点数
:为了增加数的表示范围- 采用
规格化浮点数
:为了增加数据的精度。【本来要舍弃的1,在规格化后被保留了】
规定:
2.3.2 浮点数标准(IEEE754)
注意:
- IEEE754标准阶码采用移码,且其偏移量为
2^(n-1) - 1
- 结果导致
全1
由最大变成了最小的数,其他的顺序保持不变。全0
和全1
有特殊用途,故1<=E<=254
- 尾数全0,阶数全1时:表示
无穷大
- 尾数全0,阶数全0时:表示
0
注意:
IEEE754
阶数用移码[注意:偏移量不同]
,尾数用原码[注意:1隐藏表示]
。- 上面计算浮点数的真值的公式是针对于规格化的浮点数,才这样计算。
2.3.3 浮点数的运算
2.3.3.1 浮点数的加减运算
浮点数的加减运算步骤:
- 对阶:阶数
小
的向阶数大
的对齐。【注意阶码-1时同时将尾数算术右移1位,可能舍入
】 - 尾数加减:注意是用
补码加减(采用双符号位)
【如果不是补码可以先转补码,算完后再转回来,比如IEEE754
标准就需要这样处理】 - 规格化:和平常的浮点数规格化一样。【多次左规】
如果加减后尾数的符号位不一样,表示溢出,但是此时的溢出是可以挽救的,需要右规
,且符号位改为本应该得到的那一位。【只需要右规一次】- 如果加减后得到
01.xxxx
, 则为00.1xxxx
- 如果加减后得到
10.xxxx
, 则为11.0xxxx
- 如果加减后得到
- 舍入:有恒置“1”法 和 “0”舍”1″入法 两种
- 判断溢出:由
阶码
的符号决定,如果阶码的双符号位不同,则表示溢出。- 为
01
时,即阶码大于最大阶码,表示上溢,进入中断。 - 为
10
时,即阶码小于最大阶码,表示下溢,按机器0处理。
- 为
注意:
2.3.3.2 (C语言)浮点数强制类型转换
3. 算术逻辑单元(ALU)
记住几个知识点:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84565.html