Java 8: почему я не могу разобрать эту двоичную строку в long?

Короче говоря, я возился с некоторыми базовыми генетическими алгоритмами в Java. Я использовалlong чтобы сохранить мои гены, но я использовал двоичные строки для удобства чтения при отладке. Я столкнулся со странной ситуацией, когда я не мог разобрать некоторые двоичные строки, которые начинаются с1 (Я не знаю, так ли это всегда, но похоже, что это соответствует строкам длиной 64 символа).

Я смог повторить это на следующем примере:

String binaryString = Long.toBinaryString(Long.MIN_VALUE);
long smallestLongPossibleInJava = Long.parseLong(binaryString, 2);

Который будет бросать и производить следующую трассировку стека:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1000000000000000000000000000000000000000000000000000000000000000"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Long.parseLong(Long.java:592)
    at com.company.Main.main(Main.java:25)

Учитывая, что у меня правильно отформатированная двоичная строка длиной шестьдесят четыре символа, почему я не могу разобрать некоторые строки в long? Большую часть времени мои строки генерируются случайным образом, но в приведенном выше примере это должно работать (видя, чтоLong.MIN_VALUE определенно является действительным длинным в Java).

Ответы на вопрос(1)

Ваш ответ на вопрос