从浮点数的计算机表示中我学到了计算机的浮点表示。
\n根据教程,对于32位浮点数,可以存储的最小正归一化数\n是2^(-126)\xef\xbc\x8c,最大归一化数是(2-2^(-23)) *2^(127)\xe2\x89\x88 2^(128)。然而,精度受到 23 位有效数的限制。
在我看来,32位浮点数可以表示2^60而不会出现任何错误,因为:
\n\n用指数和尾数的隐藏位(1)来表示2^60就完全足够了。
\n\n我的测试代码如下(VS2013 + win10):
\n\n#include <iostream>\n#include <math.h>\n#include <bitset>\n\nusing namespace std;\n\nint main()\n{\n union\n {\n float input; // assumes sizeof(float) == sizeof(int)\n int output;\n } data;\n\n data.input = pow(2., 60.);\n\n std::bitset<sizeof(float) * CHAR_BIT> bits(data.output);\n\n\n std::cout << "Total: " << bits << std::endl;\n\n\n cout << "Sign: " << bits[31] << endl << "Exponent: ";\n\n for (int i = 30; …Run Code Online (Sandbox Code Playgroud)