Einfache Frage, aber ich kann es nicht so recht herausfinden:
Wenn ich eine Ganzzahl habe, sagen wir 12, und führe die folgende Bit-Manipulation aus:
int i = 12;
i = (i << 3) + (i << 1);
Ich habe 120 (12 * 10). Dies ist der Fall mit einer beliebigen Nummer.
Kann mir jemand kurz erklären, warum das so funktioniert? (Ich vermisse offensichtlich etwas ziemlich rudimentäres, wenn es um Bitshifting geht).
Danke
i << 3
entspricht i * 8
. i << 1
entspricht i * 2
.
Die Eigenschaft verteilen sagt uns Folgendes:
%Vor% Das Links-Bitshift ist das gleiche (normalerweise) wie das Multiplizieren mit Zweierpotenzen. d. h. << 1
entspricht *(2^1)
, << 2
entspricht *(2^2)
und so weiter ...
Wenn Sie das in Ihrem Beispiel ersetzen, können Sie sehen, warum Ihr Ergebnis mit 10 multipliziert wird:
%Vor%Schreibe die Bitshift als Multiplikation mit Potenzen von 2, und alles sollte klar werden.
Tags und Links c++ bit-manipulation