模4补码模2补码都是把负小数变为正数从而规避负号问题(将负号转为数值)的一种方法。

*以负小数-0.1101为例

将其原码表示时

1
2
不使用模操作,只是将符号位设置为1
[x]原 = 1.1101

将其模2补码表示时

1
2
使用模2操作,以2为模,相减求其补码。相当于每次加2,都等于加0
[x]补 = 2 - 0.1101 = 10 - 0.1101 = 1.0011

将其模4补码表示时

1
2
3
模4补码也称变形补码
使用模4操作,以4为模,相减求其补码。相当于每次加4,都等于加0
[x]补 = 4 - 0.1101 = 100 - 0.1101 = 11.0011

模2补码和模4补码所加的数都是加在符号位上,并不会影响绝对值的大小,所以在进行补码乘法时,通常不会代入符号位进行相乘

基于模4补码与模2补码的特点
模2补码–单符号位
模4补码–双符号位

通过符号位判断溢出

  • 一位符号位判断溢出:参与操作的两个符号数相同,但计算结果与原操作数不同,则溢出了
  • 双符号位判断溢出:两个符号位存储相同的符号数,当计算之后结果两个符号位不同,说明溢出
  • 一位符号位+进位情况:符号位进位与最高位数值位产生的进位相同时无溢出,否则溢出

双符号位溢出情况

s1s2符号位表示情况
s1s2=00表示结果为正,无溢出
s1s2=01表示结果正溢出
s1s2=11表示结果为负,无溢出
s1s2=10表示结果负溢出