无符号加法:正常二进制加法逐位计算,若溢出则减去上限值(恰好溢出将会变成0),检测溢出:和是否小于加数

无符号数求反(和为零的数):用MAX+1减去该数,这样相加时就会恰好溢出而返回0。

补码加法(有符号数使用):正常二进制加法逐位计算,如果进位到符号位即发生溢出,正溢出为负,负溢出为正,均减去溢出一侧的边界即可,或者直接看二进制结果也可以得到。

补码的非:除TMin为自身以外(负溢出之后恰为0),均为其对应相反数。

无符号乘法:正常二进制乘法,高位截断,相当于取模的操作。

补码乘法:正常二进制乘法,高位截断之后的结果是一样的。

乘以常数:按2的幂次移位,利用乘法分配律改动乘数,先分开来移位再加减。

除以2的幂:有符号数逻辑右移,无符号数算术右移,并在移位前加入一个bias=2^移位距离的偏置,保证负数向0舍入。

 

各种十进制意义上的运算:加减乘除,不论是在有符号数还是无符号数上,都有着类似的位级行为。

加:二进制加法

溢出:减去溢出的边界值

取反:考虑改符号或者溢出

减:取反+加法

截断:取模

乘:二进制乘+截断

2的幂乘:左移位

数乘:分配律(加减法+移位)

2的幂除法:逻辑右移/算术右移+偏置