1.按位运算
C语言中按位运算有符号|表示按位OR运算;符号&表示按位AND运算;符号~表示按位NOT运算;符号^表示按位XOR运算。
3.移位运算
逻辑移位:不考虑符号位,总是把高(低)位移出,低(高)位补0。对于无符号整数的逻辑左移,如果最高位移出的是1,则发生溢出。
算术移位:左移时,高位移出,低位不0,每移一位,如果左移前、后符号为不同,则发生溢出;右移时,低位移出,高位补符号位。
4.位扩展和位截断运算
0扩展:用于无符号数,只要在短的无符号数前面添加足够的0即可。
符号扩展:补码表示的带符号整数,通过在短的带符号整数前添加足够多的符号位来扩展。
_原码加减运算
1.比较两个操作数的符号,对加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差”。
2.求和时,数值位相加,若最高位产生进位则结果溢出。和的符号位取被加数(被减数)的符号。
3.求差时,被加数(被减数)数值位加上加数(减数)数值位的补码。
_补码加减运算
[x+y]补=[x]补+[y]补(mod 2^n)
[x-y]补=[x]补+[y]补(mod 2^n)
MIPS指令里涉及到的运算: