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.
int 300 in 32-bit Binärdarstellung = 0b0000_0000_0000_0000_0000_0001_0010_1100
Java macht two's complement narrowing, das heißt wir schauen uns das Vorzeichen von 300 an, was 0 ist. In diesem Fall können wir einfach die überschüssigen Bits von 300 abschneiden und kommen an bei: 0b0010_1100
was dezimal = 44 ist.
Two's complement Darstellung hat auch den Vorteil, dass wir hier allerdings auch immer einfach die Bits abschneiden können.
A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits, where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value, this may cause the sign of the resulting value to differ from the sign of the input value.
Wenn du das korrekte Ergebnis mittels Arithmetik ausrechnen möchtest (und nicht einfach mit Bit-Abgeschneide), benötigst du die Modulo-Operation zu 256. Also 300 % 256 = 44.
Oder anders ausgedrückt: Dividiere 300 durch 256. Das ergibt ganzzahlig abgerundet 1 und es bleibt ein Rest von 44, weil 256 * 1 + 44 = 300.
Interessanterweise gilt für eine Modulo-Operation n % m, bei der m eine Zweierpotenz ist (was 256 ja ist, weil 2^8 = 256), dass n % m == n & (m - 1), wobei & ein bitweises AND ist. Also in unserem Beispiel mit 300 & 255 = 44.
Oder mit anderen Worten: Durch das bitweise AND werden alle höheren Bits abgeschnitten (bzw. auf null gesetzt).
int 300 in 32-bit Binärdarstellung = 0b0000_0000_0000_0000_0000_0001_0010_1100
Java macht two's complement narrowing, das heißt wir schauen uns das Vorzeichen von 300 an, was 0 ist. In diesem Fall können wir einfach die überschüssigen Bits von 300 abschneiden und kommen an bei: 0b0010_1100
was dezimal = 44 ist.
Two's complement Darstellung hat auch den Vorteil, dass wir hier allerdings auch immer einfach die Bits abschneiden können.
Klar kann man es auch mit Deiner Berechnung berechnen (Methode.... das ist doch etwas weit hergeholt), aber dann bitte RICHTIG. @httpdigest hat das erstklassig erklärt!