浮点数表示方法 50
有一个字长为32位的浮点数,符号为位一位;阶码为8位,用移码表示;尾数23位,用补码表示;基数为2.请写出:
(1)最大数的二进制表示
(2)最小数的二进制表示
(3)规格化数所能表示的数的范围 展开
一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。
如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。
扩展资料
浮点数就是利用指数达到了小数点“浮动”的效果。从而可以灵活地表达更大范围内的数, 比如 :
3.6879 * 10 ^ 2 = 368.79
1.2345 * 10 ^ 3 = 1234.5
7.89 * 10 ^ 2 = 789
小数点的位置是不固定的。不过对于同一个浮点数,也有很多表达方式, 368.79 可以表达为:
3.6879 * 10 ^ 2
0.36879 * 10 ^ 3
36.879 * 10 ^ 1
由于其多样性, 很多计算机厂商都设计了自己的表示浮点数的规则,以及对浮点数运算的细节。 多样的规则对于程序的可靠性和移植性都是不利的。
参考资料来源:百度百科-浮点数
浮点数的表示方法
Java 语言支持两种基本的浮点类型: float 和 double ,以及与它们对应的包装类 Float 和 Double 。它们都依据 IEEE 754 标准,该标准为 32 位浮点和 64 位双精度浮点二进制小数定义了二进制标准。
IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。IEEE 浮点数用 1 位表示数字的符号,用 8 位来表示指数,用23 位来表示尾数,即小数部分。作为有符号整数的指数可以有正负之分。小数部分用二进制(底数 2)小数来表示,这意味着最高位对应着值 (2 -1),第二位对应着 (2 -2),依此类推。对于双精度浮点数,用 11 位表示指数,52 位表示尾数。IEEE 浮点值的格式如图 所示。
例:一种8字节(共64位)的浮点数格式
(1)符号位 0为正,1为负
(2-12)阶码 可表示0~2^11-1,即0~2047
(13-64)尾数 13位表示1/2,14位表示1/4,15位表示1/8……依次类推
浮点数的绝对值:(1+尾数)×2^(阶码-1023)
浮点数的绝对值范围:
最大:(1.11…1)b×2^(2047-1023)=(1.11…1)b×2^1024
最小:(1.00…0)b×2^(0-1023)=2^-1023
(浮点数的规格化:化为尾数第一位为1的浮点数,小数点左移为正,右移为负)
你的问题解决如下:
1)最大正数:(1-2^-23)*2^127
最大负数:-2^-129
2)最小正数:2^-129
最小负数:-2^127
3)-(0.10…0)b×2^-126 ~ (0.11…1)b×2^128
参考资料: http://www.tvu.sh.xj.cninfo.net/media_file/2004_05_29/20040529093421.ppt