4

以下代码的输出:

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

是:

11111111110000000000000000000000000000000000000000000000000000
100000010010000000000000000000000000000000000000000000000000000

为什么此代码为 1024 的值多打印一点?

4

2 回答 2

4

为什么此代码为 1024 的值多打印一点?

这是因为 Long.toBinaryString 删除了前导 000000。Adouble始终是 64 位,但它最多可以有 63 个前导零。

例如 0000000000000000000000000000000000000000000000000000000000000000000000001 打印为 1

于 2013-05-13T09:32:18.763 回答
3

尝试这个:

System.out.println(Long.toBinaryString(1));

输出是:

1

这表示Long.toBinaryString()丢弃前导零。

于 2013-05-13T09:33:37.137 回答