Java 8: ¿Por qué no puedo analizar esta cadena binaria en un largo?

En pocas palabras, estaba jugando con algunos algoritmos genéticos básicos en Java. Estaba usando unlong para almacenar mis genes, pero estaba usando cadenas binarias para facilitar la lectura durante la depuración. Me encontré con una situación extraña en la que no podía analizar algunas cadenas binarias que comienzan con un1 (No sé si este es siempre el caso, pero parece ser consistente con cadenas de 64 caracteres de longitud).

Pude replicar esto con el siguiente ejemplo:

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

Lo cual arrojará y producirá el siguiente stacktrace:

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)

Dado que tengo una cadena binaria correctamente formateada de sesenta y cuatro caracteres de longitud, ¿por qué no puedo analizar algunas cadenas en un largo? La mayoría de las veces, mis cadenas se generan aleatoriamente, pero en la instancia anterior esto debería funcionar (ya queLong.MIN_VALUE Definitivamente es un largo válido en Java).

Respuestas a la pregunta(1)

Su respuesta a la pregunta