补码表示的定点数相加问题!

问题描述:

补码表示的定点数相加问题!
书上是这么说的:加法运算的原则是两个数的补码之和等于两个数之和的补码.例如,如果相求0.1010+(-0.0101),则应当先将其各自转换成补码形式,0.1010的补码为01010,-0.0101的补码则为11011,随后补码相加的结果为100101,有溢出,最终结果是00101,恢复二进制0.0101.
该我说了:完全看不懂,首先这两个0.1010+(-0.0101)的数是几进制的数?怎么各自转换成补码形式?为什么0.1010的补码为01010?还有-0.0101的补码为什么是11011?怎么算的?

我一个一个回答吧,首先两个二进制数相加肯定还是二进制数;其次,二进制有符号数转化为补码形式的规则如下,正数形式不变(当然小数点不用),负数是将其绝对值集对应正数补码形式按位取反末位加一即可.;最后,相加后保持位数不变,若最高位有进位直接舍去即可.-0.0101的补码不是应该是111011嘛?符号不是用1表示吗? 他们转换成补码后相加又怎么得到100101的?我会追加分的。小数的符号位是用整数位表示的(双符号位除外),所以只要11011即可;加的过程如下01010+ 11011=100101第一位相加得1,第二位相加为2,进高位1,且此为保留成0(用十进制数加法思考对比下),以此类推,最后,高位有进位,将此位舍去,结果就是0.0101了.注意二进制数相加是逢2进1,其他与十进制数类似。