一、运算方法定点数、浮点数运算一定点数运算1. 原码原码表示符号位数值位正数符号0负数符号1加法符号相同数值相加符号不同大数减小数。缺点符号位单独处理硬件复杂很少直接用来加减减法转化为加法比较绝对值大小2. 补码计算机实际使用重点核心减法可以转换为加法符号位一起参与运算正数补码 原码负数补码原码数值位取反1补码加法公式[XY]补[X]补[Y]补补码减法公式[X-Y]补[X]补[-Y]补[-Y]补对[Y]补全部位含符号位取反加1溢出判断(1). 符号位法两个正数相加结果为负 / 两个负数相加结果为正 → 溢出(2). 进位法最高数值位进位 和 符号位进位两者不同则溢出(3). 双符号位变形补码00正常正11正常负01正溢出10负溢出3. 反码正数反码原码负数反码数值位取反。现在基本只作为求补码中间步骤。4. 定点乘除原码一位乘符号单独异或数值部分绝对值移位相加右移补码一位乘Booth算法常考符号位一起参与运算根据最低两位判断加X、-X或者不加右移算术右移原码除法恢复余数法、不恢复余数法加减交替法二浮点数运算浮点数格式M尾数E阶码运算步骤5步简答1. 对阶小阶向大阶看齐尾数右移阶码增加。对阶只会右移不会左移2. 尾数加减用补码运算3. 规格化二进制原码规格化尾数最高位1二进制补码规格化正数0.1xxxx负数1.0xxxx左规尾数溢出不足左移阶码减右规尾数溢出右移阶码1最多右规1次4. 舍入0舍1入法、恒置1法5. 溢出判断看阶码尾数溢出不算溢出只需要右规阶码上溢才是真正溢出阶码上溢浮点数溢出阶码下溢当作机器零二、运算器1. 运算器功能完成算术运算加减乘除、逻辑运算与或非、异或、移位、比较暂时存放运算数据。2. 运算器组成(1). ALU 算术逻辑单元核心实现算术、逻辑运算。是组合逻辑电路没有存储能力。ALU输入操作数、控制信号输出运算结果、标志位(2). 通用寄存器组存放操作数、中间结果。CPU内部高速。(3). 状态寄存器PSW/标志寄存器保存运算结果标志CF进位标志ZF零标志SF符号标志OF溢出标志PF奇偶标志(4). 移位电路算术移位、逻辑移位、循环移位(5). 数据通路连接各部件传输数据3. ALU 原理核心加法器所有减法、乘除最终都依靠加法器移位实现一位全加器FA输入A_i,B_i,C_{i-1}输出本位和S_i进位C_i多位加法器串行进位加法器电路简单进位逐级传递速度慢并行进位超前进位CLA提前算出所有进位速度快硬件复杂现代CPU ALU用这个4. 移位操作(1). 逻辑移位无符号数。逻辑左移低位补0逻辑右移高位补0(2). 算术移位有符号数。符号位不变。算术右移符号位补入高位算术左移低位补0左移可能溢出(3). 循环移位带进位循环、不带进位循环三、高频简答/考点汇总1. 为什么计算机用补码运算补码可以将减法转换为加法符号位和数值位统一参与运算简化硬件电路不需要单独处理符号。2. 浮点数运算为什么要小阶对大阶如果大阶对小阶尾数需要左移高位丢失严重损失精度右移只会丢失低位误差更小。3. ALU能不能保存数据ALU是组合逻辑电路不能存储运算结果必须送到寄存器保存。4. 溢出和进位区别进位CF最高位向外产生进位无符号数使用溢出OF有符号数运算结果超出表示范围有符号数判断。四、公式速记补码加减[XY]补[X]补[Y]补[X-Y]补[X]补[-Y]补浮点数