以下代码的输出:
System.out.println( Long.toBinaryString( Double.doubleToRawLongBits( 1 ) ) );
System.out.println( Long.toBinaryString( Double.doubleToRawLongBits( 1024 ) ) );
时:
11111111110000000000000000000000000000000000000000000000000000
100000010010000000000000000000000000000000000000000000000000000
为什么此代码会为1024的值打印一位?
答案 0 :(得分:4)
为什么此代码会为1024的值打印一位?
这是因为Long.toBinaryString删除了前导000000。 double
始终为64位,但最多可以有63个前导零。
e.g。 000000000000000000000000000000000000000000000000000000000000000000000001打印为1
答案 1 :(得分:3)
试试这个:
System.out.println(Long.toBinaryString(1));
输出结果为:
1
表示Long.toBinaryString()
丢弃前导零。