Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
byte b = (byte) 200;
System.out.println( b ); // –56
Warum kommt hier -56 raus? Aus der Erklärung im Buch werde ich nicht schlauer: "Der Java-Compiler nimmt dazu einfach die Bitbelegung von 200 und interpretiert das oberste dann gesetzte Bit als Vorzeichenbit. Bei der Ausgabe fällt das auf (siehe oben)."
:autsch:
Bits ist die Darstellung der Zahlen in Nullen und Einsen. Einfach nur ein anderes Zahlensystem - Menschen benutzen Zahlen 0-9, Computer 0-1.
1 bedeutet bei Menschen nur 1*10^0
2 bedeutet 2*10^0
3 bedeutet 3*10^0 etc.
10 bedeutet 1*10^1 + 0*10^0
11 bedeutet 1*10^1 + 1*10^0
Bei Binärzahlen genau das gleiche, nur da gibts nur 2 Zahlen, von 0-1:
1 = 1*2^0
10 = 1*2^1 + 0*2^0
111 = 1*2^2 + 1*2^1 + 1*2^0
etc.
Ein byte hat nur 8 Stellen. Und die erste Stelle (also die 8. Stelle von Rechts) dient sozusagen als das Vorzeichen. Allerdings ist das kein "Vorzeichen" als solches, sondern einfach nur der Wert, der als nächstes folgen würde in der Reihung mit umgedrehten Vorzeichen:
111 1111 = 127.
1111 1111 WÄRE 127 + 128, aber weil es das letzte Bit ist, wird das Vorzeichen umgedreht: 127 + -128 = -1:
Da alles miteinander addiert wird, wird am Schluss -128 draufaddiert und somit kommt eine negative Zahl.