运算方法和运算部件
一.高级语言和机器指令中的运算
1.C程序中涉及的运算
涉及的运算有按位运算
、逻辑运算
、移位运算
、位扩展和位截断运算
- 移位运算
负数反码,移位后符号位不变,左移时,最高位丢失0,则结果出错;右移时,最低位丢失0,影响精度。
负数补码,移位后符号位不变,左移时,最高位丢失0,则结果出错;右移时,最低位丢失1,影响精度。 - 位扩展
进行位扩展时,扩展后的数值应保持不变。
扩展方式有:0扩展和符号扩展。0扩展用于无符号数,只要在短的无符号数前面添加足够的0即可。符号扩展用于补码表示的带符号整数,通过在短的带符号整数前添加足够多的符号位来扩展。
2.MIPS指令中涉及的运算
MIPS指令系统涉及的运算有按位逻辑运算、逻辑移位、算术移位、带符号整数的加减乘除、无符号整数加减乘除、带符号整数的符号扩展、无符号数的0扩展
、单精度浮点数加减乘除、双精度浮点数加减乘除等。
2.基本运算部件
1,串行进位加法器
- 串行进方式:n位加法器,X与Y逐位相加,位间进位串行传送。
- 只有一个全加器,数据逐位串行送入加法器中进行运算。进位触发器用来寄存进位信号,以便参与下一次运算。
- 行进位加法器速度慢的主要原因是进位按串行方式传递,高位进位依赖低位进位。
2,并行进位加法器
用n位全加器实现两个n位操作数各位同时相加,这种加法器称为并行加法器。并行加法器中全加器的个数与操作数的位数相同。并行加法器中全加器的位数与操作数的位数相同,可同时对操作数的各位相加。计算机内部大多采用两级或多级先行进位加法器
3,带标志加法器
3.定点数运算
1,补码加减法
- 运算表达式
- 判断是否溢出
2,原码加减运算
比较两个操作数的符号,对加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差求和时,数值位相加,若最高位产生进位则结果溢出
求差时,被加数数值位加上加数数值位的补码
3,移码加减运算
移码的和、差等于和、差的补码。
4,原码乘法运算
原码一位乘法
(1)确定乘积的符号位。由两个乘数的符号异或得到。
(2)计算乘积的数值位,乘积的数值部分分为两个乘数的数值部分之积。
原码二位乘法
原码两位乘是用两位来决定新的部分积的形成,形成4种状态