你问的这个问题涉及到了数的定点和浮点表示方法,这是属于微机原理的内容了,大概给说一下,希望你能看懂,不懂的话就看看微机原理知识。
在计算机中,数有两种表示方法,即定点表示法和浮点表示法。它们的区别是:定点表示法中,小数点位置固定不变;浮点表示法中:小数点是浮动的。
通常,对于任意一个二进制数总可以表示为一个纯整数(或纯小数)和一个2的整数次幂的乘积形式N=2^P*S。 其中,S称为数N的尾数,P称为数N的阶码,2称为阶码的底。此处P、S都是用二进制表示的数。尾数S表示了数N的全部有效数字,阶码P指明了小数点的位置。
1、定点表示法
当阶码为固定值时,这样的数,称为定点数。一般来说,小数点位置固定在哪个位置上并无限制,但为了简便起见,在计算机中有两种定点数是最常用的。
(1)定点纯整数:当P=0,且尾数S为纯整数时,只能表示纯整数,称为定点纯整数。其格式为:
符号位 尾数S(小数点).
此时,把小数点固定在最低数值位右边,最高位为符号位,小数点本身不占位。
(2)定点纯小数:当P=0,且尾数S为纯小数时,只能表示纯小数,称为定点纯小数。其格式为:
符号位 .(小数点)尾数S
此时,把小数点固定在最高数值位左边,在小数点左边设有一位符号位,小数点本身不占位。
例如,8为二进制数11010100,若是定点纯整数,则其大小为-84;若是定点纯小数,则其大小为-0.65625。
从上例看出,定点纯整数和定点纯小数在格式上毫无差别,这是因为定点数的小数点是隐含的,小数点的位置是由程序员预先设定好的。由于定点数是将小数点的位置固定,这种方法所表示的数范围小,精度低,所以就有了现在的浮点表示法。
2、浮点表示法
如果阶码P不为0,且可在一定的范围内取值,这样表示的数称为浮点数。(为了在位数有限的前提下,尽量扩大数的表示范围,同时又保持数的有效精度,计算机往往采用浮点数表示数值。浮点数是用指数和尾数来表示实数的,由于指数可以选择不同的编码方式,尾数的格式和小数点的位置也可以有不同的约定,因此浮点数的表示方法不是唯一的。目前很多计算机厂家采用的是IEEE标准,IEEE浮点数格式分单精度和双精度两种,单精度为32位,双精度为64位。)
单精度数的指数E用8位表示,偏移量为+127,尾数包括符号位24位,其二进制编码格式为:
S E1E2......E8 b1b2b3......b23
双精度的指数E用11位表示,偏移量为+1023,尾数包括符号位共53位,其二进制编码格式为:
S E1E2......E11 b1b2b3......b52
举个例子:
将219.125表示成单精度浮点数?
步骤1:将十进制数化为二进制数:
219.125=11011011.001B
步骤2:将二进制数化为规格化形式:
11011011.001B=1.1011011001*2^7
指数为7,故E=7+127=134=10000110B
步骤3:写出二进制表示的规格化的浮点数形式:
0 1000 0110 1011 0110 0100 0000 0000 000
(这个就是单精度数219.125在内存中的存储形式,共4占个字节,32位) |