计算机是如何存储浮点数的(工作原理,实现方式)

计算机专业的来答

计算机用二进制来表示数字,浮点数也是如此:
首先了解如何用二进制表示小数(也就是如何把十进制小数转化为二进制表示):
举一个简单例子,十进制小数 10.625
1)首先转换整数部分:10 = 1010b
2)小数部分0.625 = 0.101b
(用“乘2取整法”:0.625*2=1.25,得第一位为1,0.25*2=0.5,得第二位为0,0.5*2=1, 得第三位为1,余下小数部分为零,就可以结束了)
3)于是得到 10.625=1010.101b
换个表示方式更加深入理解:
1*(10^1)+0*(10^0)+6*(10^-1)+2*(10^-2)+5*(10^-3) =
1*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) + 1*(2^-1) + 0*(2^-2) + 1*(2^-3)
4) 类似十进制可以用指数形式表示:
10.625=10625*(10^-3)
所得的二进制小数也可以这样指数形式表述:
1010.101b=1010101 * (2^-3)
也就是用有效数字a和指数e来表述: a * (2^e)
用一个32bit的空间(bit0~bit31)来存储这么一个浮点数,如此分配存储空间:
bit0 ~ bit22 共23bit,用来表示有效数字部分,也就是a,本例中a=1010101
bit23 - bit30 共8个bit,用来表是指数,也就是e,范围从-128到127,实际数据中的指数是原始指数加上127得到的,如果超过了127,则从-128开始计,所以这里e=-3表示为124
bit31 为符号位,1表示负数,这里应该为0
把上述结果填入32bit的存储器,就是计算机表示小数10.625的形式。

注意这个例子的特殊性:它的小数部分正好可以用有限长度的2进制小数表示,因此,而且整个有效数字部分a的总长度小于23,因此它精确的表示了10.625,但是有的情况下,有效数字部分的长度可能超过23,甚至是无限多的,那时候就只好把后面的位数截掉了,那样表示的结果就只是一个近似值而非精确值;显然,存储长度越长,精度就越高,比如双精度浮点数长度为64位,1位符号位,11位指数位,52位有效数字。
温馨提示:内容为网友见解,仅供参考
无其他回答

【4】Java 中浮点数在计算机中是如何存储的?
在Java中,浮点数的存储分为单精度浮点数(float)与双精度浮点数(double)。这里我们主要讨论单精度浮点数的存储方式。单精度浮点数以二进制形式存储,占用4个字节,共计32位,其中1位用于表示符号,8位用于表示指数,剩下的23位用于表示尾数。对于规格化浮点数,又分为非规格化浮点数与常见的规格化浮点...

计算机组成原理--浮点数表示方法
计算机组成原理中,浮点数的表示方法基于二进制的灵活性,通过调整小数点位置实现数值的表示。浮点数主要由四个部分组成:阶符、阶码、数符和尾数。一般来说,32位的计算机中会用7位表示阶码,1位表示阶符,剩下的23位表示尾数,1位表示数符的正负。例如,一个可能的表示方式是用两个字节(即16位)来...

请问浮点型数据在计算机是怎么存储的
2、指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储。3、尾数部分(Mantissa):尾数部分。

浮点数在内存中的存储形式
浮点数是计算机中用于表示实数的一种形式,它包括了介于整数之间的数值,如3.0或1.23e4。这些数值可以使用小数点或科学计数法来表示,如1.23乘以10的幂。浮点数的存储遵循IEEE 754标准,每个浮点数由符号位S(决定正负)、有效数M(0.1至2之间的二进制小数)和指数E(表示M的位数,以2为基数)组...

浮点类型是如何存储的
浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。科学计数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的...

浮点数是怎么存储的?
浮点数存储时有符号位,阶数位和尾数三部分组成。解:最大的正数= (1-2 ^ (7))x 2 ^ (2 ^ (3) - 1) = (1-2 ^ (7)) x 2 ^(7) = 127,规则最小的正数=2×2^(-1)(或2^(3))x^2=2-1=2^(8)(9)=1/512。最明显的绝对值是-1*2^(2^3-1)...

MySQL浮点类型数据存储与使用方法cmysql浮点类型
在MySQL中,浮点数的存储方式是按照IEEE标准进行存储的。具体来说,MySQL将浮点数存储为一个64位的二进制数,其中第一位表示符号位,接下来的11位表示指数部分,剩下的52位表示尾数部分。例如,一个8字节的double类型数据存储为64位二进制数0001 0000 0000 0000 0000 0000 0000 0000 0001 0100 1000 ...

计算机组成原理——浮点数表示方法
就是在二进制中,一个数的小数点可以可以通过乘以2的幂次来改变位置,这是其原理 。浮点数的组成:阶符+ 阶码 +数符+ 尾数 计算机中表示浮点数的字长通常为32位,其中7位作阶码,1位为阶符,23位尾数,1位作数符 例如用2个字节表示一个浮点数(32写起来麻烦,所以用2个字节就是16位来举例,...

float变量在内存当中是怎样存储的?或是怎样的一种存储格式?
cout<<"请输入一个浮点数:";cin>>a;cout<<endl;for(i=0;i<4;i++){ c_save[i] = *((uchar*)f+i);} cout<<"此浮点数在计算机内存中储存格式如下:"<<endl;for(i=4;i!=0;i--)binary_print(c_save[i-1]);cout<<endl;} 好了,我想如果你仔细看完了以上内容,你现在对...

float是什么意思
浮点数在计算机中的存储原理:一、在计算机中,保存这个数使用的是浮点表示法,分为三大部分:1.第一部分用来存储符号位(sign),用来区分正负数,这里是0,表示正数 2.第二部分用来存储指数(exponent),这里的指数是十进制的6 3.第三部分用来存储小数(fraction),这里的小数部分是001110011 二、...

相似回答