浮点到二进制值(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