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

时间:2013-05-13 09:28:34

标签: java types double bit-representation

以下代码的输出:

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

时:

11111111110000000000000000000000000000000000000000000000000000
100000010010000000000000000000000000000000000000000000000000000

为什么此代码会为1024的值打印一位?

2 个答案:

答案 0 :(得分:4)

  

为什么此代码会为1024的值打印一位?

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

e.g。 000000000000000000000000000000000000000000000000000000000000000000000001打印为1

答案 1 :(得分:3)

试试这个:

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

输出结果为:

1

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