本文主要是介绍float型变量能存储的最大正值和最小正值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天写一写我对float变量的理解,我也是学习了网上的一些作者的看法,现在用最白的白话文记录下我对float变量存储格式怎么存储最大值和最小正值的理解。
首先上面的单精度格式大家都知道,IEEE(Instituteof Electrical and Electronics Engineers (IEEE)指定的格式,也许是因为这样设计更加科学吧。
float型变量存储格式被安排32个bits(1个bit就是一个由并联和串联的电路组合,可以在command指令下让其通电(0)还是断电(1))。其中如图所示,31位被安排了符号,指数位安排了8个bits(其中30号位也是符号位,是指数的符号位),尾数位安排了23个bits
随机选一个十进制数23.125,转为二进制数为:10111.001
换算成科学计数法10111.001=1.0111001 * 2^4
其中标红部分(0111001)就是将要保存到float格式中的尾数位(那么二进制整数位1为什么不用保存呢,是因为这是个定值,保存在隐藏位了)
指数4就是将要保存到float格式中的指数位,4是个十进制数,保存到计算机中需要换算成二进制,即100,但是这样还不能直接存储到指数位置,这是因为指数位采用移位存储技术,意思就是,8bits的空间可以本可以存储256个十进制正值,但是因为由于有负指数的需求,所以IEEE指定127到0计为负,127 到 255为正,且255和0表示无穷值,不能输出!所以正指数最大值只有127是可以输出实际值,负指数只有-126是可以输出实际值的。
当指数为+4时,指数位置需要表示的十进制数就是127+4=131,换算成二进制为10000011才能被计算机认为是4!
那么,十进制数23.125的储存到float格式中就是
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
那么,我们反过来算float格式中能存储的最大数值,当指数位最大值为127,尾数位为.11111111111111111111111时,
max=1.11111111111111111111111*2^127≈3.4*10^38
当指数位最大值为-126,尾数位为.0时,
min=1*2^-126≈1.175*10^-38
这篇关于float型变量能存储的最大正值和最小正值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!