Bitweiser Shiftoperator mit Verschiebung um negative Zahl
Ich bin auf ein interessantes Szenario gestoßen, als ich mit bitweiser Verschiebung gearbeitet habe. Wie funktioniert die bitweise Verschiebung, wenn der zweite Operand negativ ist? .
d.h. a << b, "<<" verschiebt ein Bitmuster in a um b Bits nach links. Aber wenn b nicht funktioniert, sollte es dann nicht zur Laufzeit ein Fehler sein?
Ich kann den folgenden Code erfolgreich ausführen, verstehe aber nicht, wie es funktioniert?
public static void bitwiseleftShift(char testChar)
{
int val=testChar-'a';
int result= 1<<val;
System.out.println("bit wise shift of 1 with val="+val+" is "+result);
}
Eingang
bitwiseleftShift('A');// ASCII 65
bitwiseleftShift('0'); // ASCII 48
Ergebnisse
bit wise shift of 1 with val=-32 is 1
bit wise shift of 1 with val=-49 is 32768
ASCII für 'a' ist 97. Kann mir jemand helfen, zu verstehen, wie das funktioniert?