1.3.2 计算机中数的表示方法
数值型数据的特点是可以有正负,还可以是整数或小数。如0,10,-125,3.1415,在计算机内,所有这些数都必须用二进制表示。
1.机器数与真值
在计算机中只有0和1两种数值的表示形式,所以,通常把一个数的最高位定义为符号位,用来区分正数与负数,0表示正数,1表示负数。每个数据占用一个或多个字节。这种连同符号一起表示的二进制数称为机器数,机器数表示的实际值称为真值。如下表示真值为-44的机器数:
其中,首位1表示此数为负数。在计算机中,字长和数据类型确定了,机器数能够表示的数值范围也就确定了。如字长8位的整数最大取值为01111111(B)=127(D)。
2.定点小数的表示方法
定点小数的小数点固定在符号位与最高数据位之间,实际上小数位并不占用空间,默认在该位置。若有m+1位的二进制位,一个纯小数的表示为N=NSN-1N-2…N-m,NS是符号位,若NS=0表示正数,NS=1表示负数。N的最大值为0.1111111,最小值为1.1111111。
3.整数的表示方法
一般把小数点定在数值最低位右边,因此对于字长为m+1位不带符号的整数表示范围为0≤N≤2m+1-1。若最高位表示符号位,带符号的整数的表示范围为-2m≤N≤2m-1。
4.数的定点与浮点表示
一个十进制数,通常总可以表示为一个小数和一个以10为底的整数次幂的乘积,例如0.123×103。同样,也可以用一个二进制小数和以二为底的整数次幂来表示一个二进制数。一般可以用N=2E×M来表示二进制数N。其中,E是二进制整数,也称阶码。M是K位二进制小数,也叫尾数。M表示了N的全部有效数字,阶码指明了小数点的位置。例如:1001.101可以表示为0.1001101×2100。
当把二进制数表示成上述形式时,如果对于任何数,阶码都是固定不变的,则称这种数的表示方法为定点表示法,称这样的数为定点数。如果阶码可以取不同的值,则称这种数的表示方法为浮点表示,称这样的数为浮点数。
定点数中的阶码固定不变,小数点被约定在固定的位置,因而阶码隐去不表示出来。小数点约定在符号位之后,数值表示成纯小数,称为定点小数。小数点约定在最低位之后,数值表示成整数,称之为定点整数。
一个浮点数有4个部分,阶码符号ES、阶码E、数符S、尾数M。在计算机内表示的一种方法如下。
为了提高所表示数的精度,充分利用尾数的有效位数,浮点数采用了规格化表示的方法,即当尾数不为0时,应修改阶码,以保证尾数数值部分的最高位必定为有效数字1,这样的浮点数称为规格化数。