Значение 1024 имеет еще один бит в двоичном представлении, что значение 1
Вывод следующего кода:
System.out.println( Long.toBinaryString( Double.doubleToRawLongBits( 1 ) ) );
System.out.println( Long.toBinaryString( Double.doubleToRawLongBits( 1024 ) ) );
Является:
11111111110000000000000000000000000000000000000000000000000000
100000010010000000000000000000000000000000000000000000000000000
Почему этот код печатает еще один бит для значения 1024?
2 ответа
Решение
Почему этот код печатает еще один бит для значения 1024?
Это потому, что ведущие 000000 отбрасываются Long.toBinaryString. double
всегда 64-битный, но может иметь до 63 ведущих нулей.
например, 000000000000000000000000000000000000000000000000000000000000000000000000000000000001 печатается как 1
Попробуй это:
System.out.println(Long.toBinaryString(1));
Выход:
1
что указывает на то, что Long.toBinaryString()
отбрасывает ведущие нули.