可能是重复问题:
C++中的浮点数转二进制
我想在C++中打印出一个浮点数的二进制表示。这只是出于好奇,并不是很实用。
以下程序无法编译。reinterpret_cast失败了。有什么类型的转换可以使用,以便我可以执行“ &(1 << i) ”这一部分吗?
#include <iostream>
using namespace std;
void toBinary(float num) {
int numi = reinterpret_cast<int>(num);
cout << num << " " << numi << endl;
for (int i = 0; i < 8 * sizeof(num); i++){
if (numi & (1<<i)) {
cout << 1;
} else {
cout << 0;
}
}
cout << endl << endl;
}
int main() {
float a;
cout << sizeof(int) << " " << sizeof(float) << endl;
a = 13.5;
toBinary(a);
toBinary(13.9);
toBinary(2 * a);
toBinary(-a);
}
char*
符合严格别名规则的例外(必须有某种方式来访问对象中的字节)。 - Fred Foo