一、高级语言和机器指令中的运算
1、C程序中设计的运算
| 运算 | 性质 |
|---|---|
| 按位运算 | (符号“丨”表示按位OR运算,“&”表示按位AND运算,“~”表示按位NOT运算,“^”表示按位XOR运算)通过给定的一个 位模式(掩码)进行按位与,可以提取所需的位,然后可对这些位进行“置1”、清“0”、“1测试”或“0测试” |
| 逻辑运算 | “丨丨”表示OR运算,“&&”表示AND运算,“!”表示NOT运算。逻辑运算是非数值计算,其操作数只有两个逻辑值:True(用非0数表示)和False(用全0数表示) |
| 移位运算 | 有逻辑移位和算术移位,逻辑移位不考虑符号位,总是把高(低)位移出,低(高)位补0。对于无符号整数的逻辑左移,如果最高位移出是1,则发生溢出。对于带符号整数的移位操作应采用补码算术移位方式。左移时,高位移出,低位补0,每移一位,如果移出的高位不同于移位后的符号位,即左移前、后符号位不同,则发生溢出;右移时,低位移出,高位补符号 |
| 位扩展和左截断运算 | 进行数据类型转换时,遇到一个短数向长数转换,就要位扩展。进行位扩展时,扩展后的数值应保持不变。两种位扩展方式:①、0扩展:用于无符号数,只要在短的无符号数前面添加足够的0即可;②、符号扩展:用于补码表示的带符号整数,通过在短的带符号整数前添加足够多的符号位来扩展 |
2、MIPS指令中涉及的运算


二、基本运算部件
1、串行进位加法器
-
全加和:
![]()
-
全加进位:
![]()
2、并行进位加法器
- 实现此逻辑表达式的电路称为先行进位(超前进位)部件,简称CLA。
.
3、带标志加法器
- n位无符号数加法器只能用于两个n位二进制数相加,不能进行无符号整数的减运算,也不能进行带符号整数的加减运算
4、算术逻辑部件
- ALU是一种能进行多种算术运算与逻辑运算的组合逻辑电路,其核心部件是带标志加法器,多采用先行进位方式。
三、定点数运算
1、补码加减运算/font>
- 在补码表示方式下,不管是正数还是负数,加、减运算统一采用加法来处理,符号位(最高有效位MSB)可以和数值位一起参与运算,加、减运算结果的符号位也在求和运算中直接得出。
2、原码加减运算
- 在浮点数加减运算中,需要比较两个指数的大小,在进行浮点数乘除运算中,需要求指数的和与差,因此浮点数运算涉及移码加减运算。
4、原码乘法运算
- 一位乘法:
①:确定乘积的符号位
②:计算乘积的数值位 - 二位乘法
如果对乘数的每两位取值情况进行判断,使每步求出对应该两位的部分积,则可将乘法速度提高一倍。
5、补码乘法运算
- 一位乘法
将符号位与数值位合在一起参与运算,直接的出用补码表示的乘积,且正数和负数同等对待。 - 二位乘法
两位一乘可以用布斯乘法过程来推导
6、快速乘法器
7、原码除法运算
四、浮点数运算
1、浮点数加减运算
1.对阶
2.尾数加减
3.位数规格化
4.尾数的舍入处理
5.溢出判断
2、浮点数乘除运算
浮点数乘法运算
1.位数相乘,指数相加
2.尾数规格化
3.尾数的舍入处理
4.溢出判断
浮点数除法运算
1.位数相除,阶相减
2.尾数规格化
3.尾数的舍入处理
4.溢出判断
五、运算部件组成
1、定点运算部件

2、浮点运算部件



.
posted on
浙公网安备 33010602011771号