`
liugang594
  • 浏览: 990872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Float值的存储

阅读更多

浮点类型的位模式不同与整数类型。

 

浮点的位模式分为指数位和有效位两部分。例如 100,可用的2的最高次幂是6,所以指数部分就是6,剩下的36就是在有效位部分。

 

但是要得到指数部分的直接位模式,我们还需要知道一个位移的概念,例如float的位移是127,所以实际上如果指数是6,那么,直接的指数部分位模式是:127+6 = 133,所以位模式是:10000101

 

回头再看 100.5, 它的位模式是:0 10000101 10010010000000000000000

我们分析一下这个值的由来:

 

  1. 第一个0,是符号位
  2. 后8位是上面算出来的,133,其中指数为6,位移为127
  3. 剩下的值表示36.5

小数点的位置是以指数来决定的,例如此处指数为6,刚小数点的位置从有效位最左开始算6位,也就是

 

100100 。10000000000000000

 

可以看出前六位计算得到:36;后面一个1算出来就是0.5。

 

 后记:从此可以看出浮点的表示方式,也知道如果一个数路够大,因为浮点在java中占32位,其中第一位是符号位,当数足够大的时候,分数部分最先损失,然后是整数部分。

 

从int 型到float型;或是从long型到double型的转换被认为是向上的,这是因为他们认为只要量级不损失就是安全的,这些转换只损失精度。

分享到:
评论

相关推荐

    float类型在内存中数值转换工具

    例如,当你有一个`float`变量`f = 3.14159`,这个工具可以将它转换成内存中的二进制表示,然后在其他系统中,你可以用相同的二进制值创建一个`float`变量,确保两个系统上的值是一致的。 在实际应用中,这个工具...

    请写出 float x 与“零值”比较的 if 语句

    const float EPSILON = 0.00001; // 定义epsilon值 if ((x >= -EPSILON) && (x )) { // 如果x的值在[-EPSILON, EPSILON]范围内,则认为x实质上等于零 } else { // 否则,x不等于零 } ``` 在这个示例中,`EPSILON`...

    c语言 float double数据类型的内存中的存储和验证

    ### C语言中float与double数据类型的内存存储及验证方法 #### 一、浮点数的基本概念 在C语言中,`float` 和 `double` 类型用于存储实数,即带有小数点的数值。这两种类型的主要区别在于它们在内存中的占用空间不同...

    float类型变量在单片机中怎么存储.pdf

    例如,如果尝试将float类型的变量转换为int类型然后进行位移操作,只会得到该float值的整数部分,而忽略掉了小数部分,这会改变原始的4个字节的内容。 为了解决这个问题,可以使用C语言的关键字union。通过定义一个...

    stm32f103的4字节转float和float转4字节代码

    在这个函数中,我们先将输入的`float`值赋给`union`的`f`成员,然后依次读取`bytes`成员的值并存入输出的字节数组中。 需要注意的是,不同架构的CPU可能对浮点数的表示方式有不同的字节序,即“大端”(Big-Endian...

    计算机单片机float存储格式(讲得很好)

    指数位用于存储指数,但它的实际值需要加上偏置,对于单精度浮点数,偏置为127。底数位则存储小数部分,由于小数点前的1总是存在的,所以在存储时不需要表示出来,因此实际上存储的是小数点后的23位二进制数字。 ...

    4BYTE转换成float型代码

    // 输出转换后的float值 std::cout 转换后的浮点数: " << float_value ; ``` 在这个例子中,`std::memcpy`函数用于复制字节序列到`float`类型的变量。注意,这个例子假设字节序与当前系统的字节序相同。如果字节序...

    float2bin_float_pythonfloat2bin_源码

    在Python编程语言中,将浮点数(float)转换为二进制表示是常见的操作,尤其是在处理数值计算、数据存储或通信协议时。标题“float2bin_float_pythonfloat2bin_源码”提示我们这里涉及的是一个使用Python编写的程序...

    16进制与float互转

    在计算机科学中,数据通常以不同的格式存储,其中16进制和浮点数(float)是两种常见的表示方式。16进制是一种基数为16的数字系统,常用于表示二进制数据,而浮点数则用于表示带有小数部分的数值,尤其在科学计算和...

    浮点数的存储结构(double和float)

    例如,在32位的`float`中,指数部分是8位,偏移量为127,这意味着实际指数是存储值减去127;而在64位的`double`中,指数部分是11位,偏移量为1023。 3. **尾数部分**:尾数是浮点数的小数部分,它表示的是1后面跟着...

    float转byte数组测试小工具

    2. 指数位:存储指数值,但这个值是偏移过的,实际指数等于存储值减去一个固定的偏移量(对于32位浮点数,偏移量为127)。 3. 尾数部分:存储浮点数的小数值,通常是一个二进制小数,其精度可以达到约7位十进制数字...

    C语言中int到float的强制类型转换

    换句话说,它存储在内存中的值是与a是完全不同的。但是其间还是有关联性的——a的首位为1的数值位后的二进制表示是与b的小数域完全相同的。 很快,问题就出现了。int型的有效位数是31,而float型小数域的有效位只有...

    如何把float类型变量发送到串口调试助手

    2. 将float变量的值赋给共用体变量。 3. 将字符数组中的每个字符(即float变量的字节)分别通过串口发送出去。 这种通过共用体访问float变量底层字节的方法,可以确保数据按照正确的格式进行传输,而不会被改变。...

    Hex to Float converter

    指数通常采用偏移量表示法,即实际指数值为存储的值减去一个固定的偏移量(通常是127)。 3. **尾数位(Fraction)**:23位,存储小数部分。这部分是小数点后的二进制数字,不包含隐藏的前导1。 **浮点数转换过程**...

    float转16进制

    在计算机科学中,数据通常以不同的格式存储,其中浮点数(float)是用于表示小数的一种常见方式。浮点数在内存中的表示遵循特定的标准,如IEEE 754。这种标准定义了如何用二进制来表示浮点数,从而支持计算和存储...

    float类型的十六进制转换为十进制

    通常,指数的值需要加上一个偏移量(对于`float`,通常是127)并进行符号修正。 4. **处理尾数**:尾数部分是不完全表示的,需要进行规范化,即向左移动直到最高位变成1(如果还没有的话),然后根据移动的位数调整...

    Float类型大小端转换测试程序

    这两种模式涉及到多字节数据类型,如整数和浮点数,如何在其字节序列中存储其值。本文将深入探讨浮点数在不同字节序之间的转换,主要基于提供的“Float类型大小端转换测试程序”。 标题中的“Float类型大小端转换...

    float2hex浮点数转换工具.rar

    在计算机科学中,浮点数是一种用于表示实数的数据类型,广泛应用于各种计算和数据存储。然而,计算机内部处理浮点数的方式并不直观,通常是二进制格式,如IEEE 754标准。在某些场景下,我们需要将浮点数转换为更易于...

    float2hex 浮点二进制整型数据计算工具

    浮点数的存储结构分为三部分:符号位(sign)、指数位(exponent)和尾数位(mantissa或fraction),它们共同决定了浮点数的值。 1. **符号位**:占一位,0代表正数,1代表负数。 2. **指数位**:表示指数的偏移量...

    将float类型的PCM数据写入WAV文件.rar

    PCM是一种无损音频编码格式,它直接存储声音波形的样本值。在浮点表示中,这些样本通常在-1.0到1.0的范围内,提供更高的精度和动态范围。而在WAV文件中,数据通常是用整数形式存储的,这需要我们在写入前进行适当的...

Global site tag (gtag.js) - Google Analytics