hans.hu

夫天地者,万物之逆旅也;光阴者,百代之过客也。而浮生若梦,为欢几何?古人秉烛夜游,良有以也。况阳春召我以烟景,大块假我以文章。

定点数据编码方法

为了运算方便,带符号的机器数有不同的编码方法,成为码制。

1、原码:又称符号绝对值码。

     该数最高位为符号位,正数用“0”表示,负数用“1”表示。其他位为数据位,用二进制数绝对值表示。原码与真值转换方便,但做加减运算不便,且零有+0和-0两种表示方法。

2、反码:正数的反码表示与原码相同。

     负数的反码,符号位用“1”表示,数值位由其绝对值各位取反得到。

     反码零也有+0、-0两种表示方法。因运算不便使用较少。

3、补码:为了加减运算方便引入补码概念。关键思想是用加法代替减法。

     正数的补码与原码表示相同。

     负数的补码,符号位用“1”表示,数值位用其绝对值的补数表示(即原码各位求反,末位加1)。

     补码最大优点是做加减运算方便。如(x+y)=(x)+(y),(x-y)=(x)+(-y)

     补码符号位参加运算,不单独处理,现代计算机中大都采用补码系统。补码另一优点是零的表示形式是惟一的,即(+0000)=(-0000)=00000。

     补码的表数范围比原码、反码略宽。在定点小数中,补码可以表示-1。

     (-1)=1.0000,而原码、反码不能表示绝对值等于1的数。

     原码、反码的表数范围是[-27-1 27-1]

     补码的表数范围是[-227-1]

4、移码:为了比较两个整数的大小,引入移码概念。

     移码与补码有类似的地方(数值部分),但符号位与补码相反,即正数的移码符号位为“1”,负数的移码符号位为“0”。或者说求一个数的移码,先求其补码再将其符号位变反即可得到。移码表数范围与补码整数的表数范围相同。

 

当编码总位数为8时有:
+127的原码、反码、补码都为:0 1111111。
-127的原码、反码、补码依次为:1 1111111、1 0000000、1 0000001。
+0、-0的原码分别为:0 0000000、1 0000000,均对应真值0。
 

posted on 2009-03-31 16:26  hans.hu  阅读(1252)  评论(0编辑  收藏  举报

导航