其他分享
首页 > 其他分享> > 浮点到二进制值(C)

浮点到二进制值(C)

作者:互联网

我想在C中采用浮点数,如2.25125,以及填充二进制值的int数组,用于将浮点数存储在内存中(IEEE 754).

所以我可以取一个数字,最后得到一个带有二进制值的int num [16]数组:
num [0]将为1
num [1]将为1
num [2]为0
num [3]将为1
等等…

将int放入数组并不困难,只需获取float的二进制值的过程就是我被困住的地方.你能不能在内存中读取float变量的二进制文件?如果没有,我怎么能在C中这样做呢?

编辑:这样做比较的原因是我想学习在C中进行按位操作.

解决方法:

使用union和bitset:

#include <iostream>
#include <bitset>

int main()
{
    union
    {
         float input;   // assumes sizeof(float) == sizeof(int)
         int   output;
    }    data;

    data.input = 2.25125;

    std::bitset<sizeof(float) * CHAR_BIT>   bits(data.output);


    std::cout << bits << std::endl;

    // or

    std::cout << "BIT 4: " << bits[4] << std::endl;
    std::cout << "BIT 7: " << bits[7] << std::endl;
}

它可能不是数组,但您可以使用[]运算符访问位,就像使用数组一样.

产量

$./bits
01000000000100000001010001111011
BIT 4: 1
BIT 7: 0

标签:c,floating-point,binary,ieee-754
来源: https://codeday.me/bug/20190927/1822435.html