Значение 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() отбрасывает ведущие нули.

Другие вопросы по тегам