我想在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/