什么是C中的陷阱表示(某些示例可能有帮助)?这适用于C++吗?
float f=3.5;
int *pi = (int*)&f;
Run Code Online (Sandbox Code Playgroud)sizeof(int) == sizeof(float)do f和*pi具有相同的二进制表示/模式?MSVC怎么样?似乎有两种类型的 C++。实用C++和语言律师C++。在某些情况下,能够将一种类型的位模式解释为一种不同的类型会很有用。浮点技巧就是一个显着的例子。让我们取著名的快速平方根反比(取自Wikipedia,又取自此处):
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); …Run Code Online (Sandbox Code Playgroud) 我有一个双数的IEEE754双精度64位二进制字符串表示.示例:double value = 0.999; 其二进制表示为"0011111111101111111101111100111011011001000101101000011100101011"
我想将此字符串转换回c ++中的双精度数.我不想使用任何外部库或.dll,因为我的程序可以在任何平台上运行.
我想要C/C++中java的Float.floatToIntBits()实现代码的源代码.