注:-128的补码和定点小数-1的补码在补码中比较特殊
先看公式
1. -128的补码是1,0000000?
[+0]原=0,000 0000 [-0]原=1,000 0000
[+0]反=0,000 0000 [+0]反=1,111 1111
[+0]补=0,000 0000 [-0]补=0,000 0000
正数的原码补码反码一样
而负数的反码是原码数值位全部取反,负数的补码则是原码数值位全部取反+1,符号位向上进位得到第九位,得到[-0]补=10,000 0000,但是采用机器字长只有8bit,所以第九位1丢弃,最终得到的[-0]补=0,000 0000=[+0]补
因此真值0的补码只有一种表现形式,而多出来一种表现形式,则将[x]补=1,0000000表示x=-128 ,补码整数的表示范围就会比原码多表示 -2^n )
2. 定点小数-1的补码是1.0000000?
定点小数-1
准确的说是-1.0
我们通常求补码是在原码的基础上取反+1,但是-1.0的原码通过纯小数的原码表示公式却表示不了,我们无法得到-1.0的原码
但我们可以通过纯小数的补码表示公式得到-1.0的补码:
[-1.0]补=2+(-1.0)=1.000 0000