Ich suche etwas zu klären.
Ich verstehe das im Hinblick auf arithmetische, logische bitweise Verschiebungen:
<<
funktioniert für beide >>
shifts unterscheiden sich dadurch, dass die logische Verschiebung immer das Byte mit 0 auffüllt, während die arithmetische Verschiebung es mit dem Vorzeichenbit auffüllen wird. Wie kann ich das mit C unterscheiden?
Nach meinem Verständnis sind die tatsächlichen Operatoren die gleichen <<
, >>
Wie unterscheidet sich das Kommando von:
? %Vor%Bitte lassen Sie mich wissen,
Bei nichtnegativen Zahlen sind beide Arten von Rechtsverschiebungen gleich. Die Differenz wird nur angezeigt, wenn die zu verschiebende Zahl negativ ist.
Tatsächlich spezifiziert der C-Standard nicht, wann >>
eine logische oder arithmetische Verschiebung ausführen soll, wenn die Zahl negativ ist, aber typischerweise führt er eine arithmetische Verschiebung durch. Um eine logische Verschiebung durchzuführen, muss die Zahl in den entsprechenden vorzeichenlosen Typ , beispielsweise , umgesetzt werden:
Tags und Links c bit-manipulation bit-shift