我想在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++中进行按位运算。

最佳答案

使用联合和位集:

#include <iostream>
#include <bitset>
#include <climits>

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++ - 浮点数到二进制值(C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/474007/

10-11 18:18