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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage