2 chenise chenise 于 2015.06.04 18:41 提问

浮点数在内存中的表示中指数位数要八位是否多余?

指数位中,除去第一位表示符号,2的七次方是128,远超尾数位23,为什么不把指数位设置为6位,而尾数位设置25位呢?
http://www.cnblogs.com/xkfz007/archive/2012/02/27/2370357.html

2个回答

qq_28720537
qq_28720537   2015.06.04 19:09

因为不知道位数有什么,要尽可能满足用户,而且计算机是二进制

nswcfd
nswcfd   2015.06.04 19:28

指数位数和尾声的位数,代表了计数范围和计数精度之间的博弈。

chenise
chenise 回复nswcfd: 我的意思是 我觉得 8:23,11:52不是最优解,范围大了点而精度没跟上。。。您觉得呢
2 年多之前 回复
chenise
chenise 回复不是阿尔伯特: 那双精度的表示中,如果指数用七位,尾数可以用56位,计数范围多了一位,而精度也没不见得下降,为何不这样设计呢
2 年多之前 回复
nswcfd
nswcfd 原理的话,网上应该有个类似于 what every programmer should know about floating-point 的文章,可以研究研究。
2 年多之前 回复
nswcfd
nswcfd 考虑两个极端就可以了,不考虑符号和指数为负值的情况, 如果指数只有1位,尾声30位:精度很大,可以到小数点后面30位(二进制),但表示范围只有1.00...0 * 2^0 ~ 1.11...1 * 2^1,还不到3,就太小了; 如果尾声只有1为,指数30位:表示范围很大,1.0 * 2^0 ~ 1.1 * 2^111...11,范围跟整数差不多,但基本上小数点后面就都是0了。 本质上实数空间有无穷多个点(就算是0~2^32之间也有无穷多个实数),用32位编码必定只能表示其中很小的一个子集。
2 年多之前 回复
albertbush
albertbush 回复chenise: 指数的尾数多,则尾数的尾数就少,也就是说数字会不精确,反之,数字就会表示的比较小。现在这样的分配,是大众比较可接受的一个方案,既有一定的精度,又可以表示常用的大数
2 年多之前 回复
chenise
chenise 或者给我相关的资料
2 年多之前 回复
chenise
chenise 有时间的话可以具体点说吗?我刚看 不懂
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!