java – 1024的值在二进制表示中有一位,值为1

以下代码的输出:

System.out.println( Long.toBinaryString( Double.doubleToRawLongBits( 1 ) ) );
System.out.println( Long.toBinaryString( Double.doubleToRawLongBits( 1024 ) ) );

方法是:

11111111110000000000000000000000000000000000000000000000000000
100000010010000000000000000000000000000000000000000000000000000

为什么这个代码会打印一个1024以上的值?

最佳答案

Why this code prints one bit more for value of 1024?

这是因为Long.toBinaryString删除了前导000000.双精度数总是64位,但最多可以有63个前导零.

例如000000000000000000000000000000000000000000000000000000000000000000000001打印为1

转载注明原文:java – 1024的值在二进制表示中有一位,值为1 - 代码日志