Java 8: Warum kann ich diese Binärzeichenfolge nicht in eine lange analysieren?

Lange Geschichte kurz, ich habe mit einigen grundlegenden genetischen Algorithmen in Java rumgespielt. Ich habe ein @ benutlong, um meine Gene zu speichern, aber ich habe beim Debuggen Binärzeichenfolgen verwendet, um die Lesbarkeit zu verbessern. Ich bin auf eine merkwürdige Situation gestoßen, in der ich einige binäre Zeichenfolgen, die mit einem @ beginnen, nicht analysieren konnt1 (Ich weiß nicht, ob dies immer der Fall ist, aber es scheint mit Zeichenfolgen von 64 Zeichen Länge übereinzustimmen.)

Ich konnte dies mit dem folgenden Beispiel replizieren:

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

Welche wirft und erzeugt den folgenden 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)

Wenn ich eine korrekt formatierte binäre Zeichenfolge mit 64 Zeichen Länge habe, warum kann ich einige Zeichenfolgen nicht zu einer langen Zeichenfolge analysieren? Die meiste Zeit werden meine Strings zufällig generiert, aber in der obigen Instanz sollte dies funktionieren (sieheLong.MIN_VALUE ist definitiv ein gültiger Long in Java.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage