1
新编大学计算机基础
1.3.5.2 1.5.2 计算机中数的表示方法

1.5.2 计算机中数的表示方法

数按不同的标准可以分为正数、负数、零;整数、小数;定点数、浮点数。

1.正负数的表示方法

平时我们用符号“+”表示正,用符号”-”表示负,在计算机中数的符号通常用一个数的最高位来表示,称之为符号位。一般规定符号位用“0”表示正数,用“1”表示负数。例如:

十进制数+56在字长为八位计算机中表示为:

img21

十进制数-56在字长为八位计算机中表示为:

img22

这种符号位用0,1表示的二进制数,称为机器数。而其实际数值(如+56,-56)称为机器数的真值。

机器数与我们平时所用的数区别在于:

l)机器数用二进制表示,平时所用数为十进制。

2)机器数的符号位用0与1表示正负,平时所用数用+、-来表示正负。

3)数位的长短,机器数受到计算机字长的限制,一般为8位,16位,32位,64位等;而平时所用数不受此限制。

2.定点数与浮点数的表示方法

对任意数N,凡小数点固定不变的表示方法称为定点表示法,凡小数点可以左右移动的表示法称为浮点表示法。

例:十进制数123.456是定点表示法,而1.23456×102为浮点表示法。浮点表示法还可以将该数表示为0.123456×103等其他形式。

一般地讲,任意一个数都可以表示为:

      N=S×Rj

式中:S称为N的尾数。尾数决定数的有效值。尾数的正负决定了整个数的正负。R是数制的基数。j是N的阶码。阶码决定小数点的位置。阶码为正,小数点应往右移,阶码为负,小数点应往左移。当尾数不变,阶码加一,意味小数点向右移动了一位,该数是原数的R倍。

例:(0.101)2×23=(101)2

  (0.101)2×22=(10.1)2

  (101)2是(10.1)2的2倍。

人们将采用定点表示法表示数的计算机称为定点计算机。在定点计算机中,定点整数的小数点固定在有效值尾。基本格式为

img23

如果计算机字长为8位,能够表示的定点整数范围为:

img24

即 +127~-127之间

对定点小数,定点计算机把小数点固定在数符之后,有效值之前。基本格式为:

img25

数 0.1010在字长为8位的定点计算机中表示为

img26

定点计算机表示数的范围受到很大的限制,容易产生“溢出”或影响计算精度,故计算机多采用浮点表示法来表示数。

浮点数在计算机中由四部分组成,即阶符、阶码、数符、尾数。基本格式为:

img27

其中,阶符、数符占一位,0为正,1为负。阶码和尾数的位数由计算机的字长和精度要求而定。当计算机的字长一定时,精度要求越高,尾数的位数就越多,此时,阶码的位数就越少,所表示数的范围就越小;反之,表示数的范围越大,阶码占位多,尾数占位少,表示的数精度就差。

例:在16位计算机中,有效值要求10位,请写出(320)10在计算机中的表示形式。

首先,将(320)10用除2取整法转换成二进制为101000000。

  101000000=0.101000000×29=0.101000000×21001

故可以表示为:

img28

请特别注意:

1)小数点的位置应在数符之后,这是人为规定的。

2)当数的位数不够时,应加0占位,注意占位0的位置。

如:101.11=00101.1100≠10100.0011

例:请计算0111101111111111在字长为16位,计算精度为10位的浮点微机中所表示的十进制值。

首先,划分出阶符、阶码、数符、尾数

img29

写成二进制为0.1111111111×21111=0.1111111111×215=111111111100000

用按权展开式转换成十进制数(111111111100000)2=(32736)10

故:0111101111111111在字长为16位,计算精度为10位的浮点微机中所表示的十进制值为32736。

3.原码、反码与补码

在计算机进行数据运算的过程中,机器数还使用原码、反码和补码表示法。标记为(N)、(N)反、(N)补。对任意数N,当N>0时原码,反码,补码是同一形式。当N<0时,反码为原码的各位取反(符号位除外),补码为原码的各位取反(符号位除外)加1。

例:写出字长为8位的计算机中,数100110和数-100110的原码、反码和补码。

数100110在字长为8的计算机中,其原码、反码和补码都为00100110。

数-100110在字长为8的计算机中,其原码为10100110,反码为11011001,补码为11011010。

对字长为8位的计算机,用8位二进制来表示有符号整数原码时,其表示范围:最大值为01111111,其真值为(127)10;最小值为11l1l111,其真值为(-127)10。在原码表示法中,对0有两种表示形式(+0)=00000000,(-0)=10000000。

对字长为8位的计算机,用8位二进制来表示有符号整数补码时,最大为01111111,其真值为(127)10;最小为10000000,其真值为(-128)10。在补码表示法中,0只有一种表示形式。因为(+0)=00000000,(-0)=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失,称为溢出),所以有(+0)=(-0)=00000000。