11 Stimmen

Warum ist 3<<1 == 6 in Python?

Mögliches Duplikat:
Leitfaden für absolute Anfänger im Bit Shifting?

Kann mir jemand den Operator << oder >> erklären?

34voto

Mark Byers Punkte 761508

En << y >> Betreiber sind Bitshift-Operatoren . x << 1 verschiebt alle Bits in x bis zum nächsthöheren Bit, wobei effektiv mit 2 multipliziert wird. Allgemeiner ausgedrückt, x << n verschiebt die Bits um n Positionen nach oben. Um zu verstehen, wie dieser Vorgang funktioniert, ist es am einfachsten, sich die binär Vertretung:

3         0000011 =  3
3 << 1    0000110 =  6
3 << 2    0001100 = 12
3 << 3    0011000 = 24

Ähnlich verhält es sich mit der >> Operator verschiebt die Bits nach unten:

58        0111010 = 58
58 >> 1   0011101 = 29
58 >> 2   0001110 = 14
58 >> 3   0000111 = 7
58 >> 4   0000011 = 3
58 >> 5   0000001 = 1
58 >> 6   0000000 = 0

15voto

Gabi Purcaru Punkte 29912

3, in binärer Form, ist 11 und um ein Bit nach links verschoben ist 110 oder 6 in Dezimalzahlen.

Denken Sie an a << b como a * (2 ** b)

>> ist für die Rechtsverschiebung. Denken Sie an a >> b como a // (2 ** b)

4voto

Julio Santos Punkte 3769

4voto

Reed Copsey Punkte 536986

Es ist eine kleine Verschiebung, mit einer Schiebebetrieb .

Angenommen, Sie haben eine Zahl, und wenn Sie die niedrigsten Bits betrachten, haben Sie 3:

0 0 1 1

Wenn du ihn verschiebst, bekommst du 6 oder:

0 1 1 0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X