各种进制常见的书写方式
十进制转其他进制(小数部分)
真值和机器数
真值:符合人类习惯的数字
机器数:数字实际存到机器里面的形式,正负号需要被“数字化”
用4个二进制对应一个十进制
⭐8421码⭐
四个二进制的权重分别为8421,相互映射关系如下
如果两个8421码相加得到的值不再映射表内,则加上8421码的6,得到的结果就是我们的8421码的结果。
计算机硬件能支持的无符号整数位数有上限
当数值超过位数上限,只能保存低位数值。
无符号整数
无符号整数的加法
从最低位开始,按位相加,并往更高位进位
⭐无符号整数的减法⭐
⭐加减法得出的结果溢出部分丢弃。⭐
原码
缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理,费用大。
⭐补码——>原码⭐
从右往左找到第一个1,这个1左边的所有“数值位”按位取反。
补码
补码数值不能解读位“位权”
⭐补码的加法⭐
从最低位开始,按位相加(符号位参与运算),并往更高位进位。得到的结果转为原码,就能得到最终的结果。
⭐⭐补码的减法⭐⭐
减数全部位按位取反,末位+1
小节总结
原反补的特性对比
⭐常见考点⭐
移码
定点整数默认小数点位置在最低位后,定点小数默认小数点位置在符号位后,即次高位。
定点小数的编码表示:原码、反码、补码
原码
符号位“0/1”,对应“正/负”
⭐定点小数的原码反码补码转换和定点整数的一模一样⭐
定点小数的加/减运算(与定点整数一样)
位数扩展时,定点小数在尾部进行扩展,定点整数在符号位和原数值位之间扩展。
1、定点数的移位运算
移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法。但是由于原码、反码、补码的位数有限,并不能每次都很精确的实现乘除法的操作。
⭐原码的算数移位⭐
符号位保持不变,仅对数值位进行移位。
算数右移:高位补0,低位舍弃。若舍弃的位=0,相当于÷2;若舍弃的位!=0,则会丢失精度。
算数左移:低位补0高位舍弃。若舍弃的位=0,则相当于x2;若舍弃的位!=0,则会出现严重误差。
⭐补码的算数移位⭐
正数和原码一样
负数补码中,最右边的1及其右边同原码,最右边的1的左边同反码。规则如下:
右移(同反码):高位补1,低位舍弃
左移(同原码):低位补0,高位舍弃
逻辑移位
左移右移后,补0即可
针对无符号数的移位。
循环移位
左移右移后,移出的位补充至需要补充的位置。
带进位的循环移位
其实就是添加了一位进行循环移位。
2、定点数的乘法的运算
原码一位乘法
实现方法:先加法再位移,重复n次。
乘数存储到MQ中,被乘数存储到X中,ACC寄存器清零。
乘数最低位乘被乘数,然后与ACC值相加,然后ACC和MQ进行逻辑右移一位,将MQ中最低位丢弃(不会再使用),然后重复最低位与被乘数相乘后,与ACC寄存器中的数相加。执行n轮。
3、定点数的除法运算
原码除法:恢复余数法
先商1,ACC和X中的值做差,更新到ACC,如果得到负数则代表原ACC中的数比较小,除法出错,则ACC+X中值恢复上一次ACC中的值,然后商0,存储再MQ的最后一位,然后逻辑左移。重复n次得出结果。最终将两个数的符号位异或,得到最高位。
原码除法:加减交替法
补码除法:加减交替法
1、大小端模式
多字节数据在内存例一定是占连续的几个字节。
大端方式(便于人类阅读)
小端方式(便于机器处理)
定点数可表述的数字范围有限,但我们不能无限制地增加数据的长度。
浮点数可以表示为⭐N=rExM⭐
E称为阶码,M称为尾数,r为阶码的底,通常为2。
⭐阶码E反映浮点数的表示范围及小数点的实际位置;尾数M的数值部分的位数n反映浮点数的精度。⭐
浮点数尾数的规格化
⭐规格化浮点数⭐:规定尾数的最高数值位必须是一个有效值。
左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数算数左移一位,阶码减1.
右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10)时,将尾数算数右移一位,阶码加1.
特点
表示范围已经在大纲中删除了,了解即可。
⭐阶码用移码表示⭐
移码=真值+偏置值(2n-1),⭐但在IEEE754标准中偏置值取2n-1-1⭐
例题
阶码全1、全0用作特殊用途
浮点数加减运算步骤
浮点数的强制类型转换
⭐int转float转换只会损失精度,不会发生溢出。⭐
⭐float向int转换可能损失精度和溢出。⭐
基本结构:输入、输出、⭐控制(CU)⭐
实现算数运算、逻辑运算、辅助功能(位移、求补等)
基本的逻辑运算
优先级:与>或
A(C+D)=AC+AD——分配律
ABC=A(BC)——结合律
A+B+C=A+(B+C)——结合律
本质上逻辑表达式是对电路的数学化描述,简化逻辑表达式,就是在简化电路。
一位全加器FA
和表达式:Si=Ai⊕Bi⊕Ci-1
进位表达式:Ci=AiBi+(AI⊕Bi)C~i-1
串行加法器
并行加法器(不是重点)
1、补码加减运算器
加法器原理
由Sub控制多路选择器,Sub等于0则为加法,多路选择器选择为0的路径,输入Y不变,直接参与加法运算。Sub等于1时,代表减法,多路选择器选择为1的路劲,输入Y经过非门,全部取反,末尾+1,减法变加法。
无符号整数的加法/减法也可用该电路实现,但是判断溢出的方式不同,设计标志位的知识。
2、标志位的生成
OF溢出标志,溢出时为1,否则置0
SF符号标志,结果为负时置1,否则置0
⭐有符号数⭐加减运算结果的正负性
ZF零标志,运算结果为0时为1,否则为0
CF进位/借位标志,进位/借位时置1,否则置0。