3.1 高级语言和机器指令中的运算
1.按位运算
按位运算的一个重要运用就是实现掩码(masking)操作。
通过与给定的一个位模式进行按位与,可以提取所需要的位,然后对这些位进行“置零”等操作。
这里位模式被称为掩码。
2.逻辑运算
是非数值运算,操作数只有两个值True和False。
3.移位运算
分为:逻辑移位和算数移位。
逻辑移位不考虑符号位,高位移出,低位补零或低位移出,高位补零。
对无符号整数采用逻辑移位。
对于带符号整数采用算数移位,左移补0,右移补符号位。
4.位扩展和位截断运算
分为:0扩展和符号扩展
截断可能会发生意想不到的错误。
3.2 基本运算部件
基本的运算部件是:加法器、ALU(算数逻辑部件)和移位器。
1.串行进位加法器和并行进位加法器
进位按串行方式传递,速度慢。
各进位之间无等待,相互独立。
局部先行进位加法器:组内并行,组间串行。
2.ALU的构成
标志信息:
ZF 零标志:无符号整数和带符号整数都有意义。
SF 符号标志:F的最高位。对于无符号整数来说,SF无意义。
CF 进/借位标志:对于无符号数来说,加法时,若CF=1,则表示无符号数溢出;减法时,CF=1,表示有借位,不够减。加法时,CF等于进位输出Cout,减法时,CF将进位输出Cout取反作为借位标志。对于带符号整数,没有意义。
OF 溢出标志:带符号整数发生了溢出。
溢出判断:(1)两个加数的符号位相同,而和的符号位不同。
(2)最高位和次高位的进位不同。