补码

  Aaron ·  2008-11-08 11:24  ·  16084 次点击
目录
简介
举例
简介
用【x】表示机器数(原码),x是真值(二进制)
x=+0.1001,则【x】原=0.1001
x=-0.1001,则【x】原=1.1001
对于0,原码中有“+0”、“-0”之分,故有两种形式:
【+0】原=0.000...0
【-0】原=1.000...0
采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
为了解决这些矛盾,人们找到了补码表示法。机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。
举例
负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便
【x】补={x1>x≥0
{2+x=2-|x|0≥x≥-1
x=+0.1011,则【x】补=0.1011
x=-0.1011,则【x】补=10+x=10.0000-0.1011=1.0101
对于0,【+0】补=【-0】补=0.0000(mod2)
例子中是以定点小数为例。
补码的原理可以用钟表来描述
如设标准时间为4点正;一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退7-4=3格;一是将时针向前拨12-3=9格。即7-3和7+9(mod12)等价,因此,把负数用补码表示的mod2操作,可以把减法转化为加法。

0 条回复

暂无讨论,说说你的看法吧!

 回复

你需要  登录  或  注册  后参与讨论!