Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Unterschied zwischen >>> und >>                                      7 Antworten                          
  •     
    

Wenn die verschobene Zahl positiv >>> und >> Arbeit gleich.

Wenn die verschobene Zahl negativ >>> füllt die höchstwertigen Bits mit 1s während >> Betrieb verschiebt die MSBs mit 0 gefüllt wird.

Ist mein Verständnis richtig?

Wenn die negativen Zahlen werden mit dem MSB auf 1 gesetzt gespeichert und nicht dem Komplement Weise 2s, dass Java verwendet die die Betreiber ganz anders verhalten würde, nicht wahr?

War es hilfreich?

Lösung

Die Art und Weise negative Zahlen dargestellt werden, ist 2-Komplement bezeichnet. Um zu zeigen, wie dies funktioniert, nehmen -12 als Beispiel. 12, binär ist 00001100 (nehmen ganze Zahlen sind 8 Bits, obwohl sie in Wirklichkeit viel größer sind). Nehmen Sie die 2er-Komplement durch einfach jedes Bit invertiert, und Sie erhalten 11110011. Dann einfach 1 hinzufügen 11110100. Hinweis zu erhalten, wenn Sie die gleichen Schritte wieder anwenden, Sie positive 12 zurück.

Die >>> Verschiebungen Null nicht, was Materie, so 12 >>> 1 sollten Sie 00000110 geben, die 6, und (-12) >>> 1 sollten Sie 01111010 geben, die 122 ist, wenn Sie tatsächlich versuchen Sie dies in Java, werden Sie eine viel größere Zahl bekommen, da Java ints tatsächlich viel größer als 8 Bits sind.

Die >> Verschiebungen in einem Bit identisch mit dem höchsten Bit, so dass positive Zahlen bleiben positive und negative Zahlen bleiben negativ. 12 >> 1 ist 00000110 (noch 6) und (-12) >> 1 wären 11111010, die 6 negativ ist.

Andere Tipps

Definition des >>> Operator in der Programmiersprache Java Spezifikation :

  

Der Wert von n ist n>>>s rechts verschoben s Bitpositionen mit Nullerweiterung. Wenn n positiv ist, dann ist das Ergebnis das gleiche wie das von n>>s; wenn n negativ ist, ist das Ergebnis gleich zu derjenigen des Ausdruckes (n>>s)+(2<<~s), wenn der Typ des linken Operanden int ist, und mit dem Ergebnis des Ausdrucks (n>>s)+(2L<<~s), wenn der Typ des linken Operanden long ist.

Genau das Gegenteil, die >>> füllt mit Nullen während >> füllt sich mit denen, wenn die h.o Bit 1 ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top