/ / Bitverschiebung nach links - c ++, c, Bitmanipulation, Bitverschiebung

Bitverschiebung nach links - c ++, c, Bitmanipulation, Bitverschiebung

Angenommen, ich möchte etwas verschieben i zweimal nach links und speichern Sie den Wert in f.

f = i << 2;

Ist das korrekt? Wie mache ich das in C / C ++?

Antworten:

9 für die Antwort № 1

Ja.

f = i << 2

Verschiebungen sind in einer Reihe von Bit-Twiddling-Operationen nützlich.

Dies war eine großartige Möglichkeit, eine Zahl mit vier zu multiplizieren. Heutzutage erledigen Optimierungscompiler dies jedoch normalerweise für Sie.

Beachten Sie, dass die beiden Bits ganz links verworfen werden.


8 für die Antwort № 2

Als zusätzlicher Hinweis: Auch wenn Ihre Frage markiert ist C++Es ist wahrscheinlich erwähnenswert, dass C und C ++ hinsichtlich der Verschiebung negativer Werte etwas unterschiedliche Wege gegangen sind. In C ++ das Ergebnis << oder >> ein negativer Wert ist implementierungsdefiniert. In c >> ist implementierungsdefiniert, während << produziert undefiniertes Verhalten.


3 für die Antwort № 3

Ja, i << 2, f = i << 2, oder f <<= 2 sind alles Dinge, die man tun möchte, um Bits zu verschieben.

Mehr Dinge, die Sie beachten sollten:

  • du hast >> auch. Auf der Bitebene >> funktioniert für signierte und unsignierte Typen unterschiedlich.

  • die Priorität von << und >> ist unter dem von + und -, was manche Leute täuscht, wie man sich sie vielleicht ähnlicher vorstellt * und /.


0 für die Antwort № 4

Um Ihnen die Vollständigkeit zu erleichtern, können Sie diese Seite besuchen: uow TEXTBOOK -> bitops.html