Wie führe ich eine vorzeichenlose Rechtsverschiebung (>>> in Java) in C/C++ durch?
Wie führe ich eine vorzeichenlose Rechtsverschiebung (>>> in Java) in C/C++ durch?
Lesezeit: 1 Minute
13719300cookie-checkWie führe ich eine vorzeichenlose Rechtsverschiebung (>>> in Java) in C/C++ durch?
geändert
Um in C eine vorzeichenlose Verschiebung zu erhalten, führen Sie einfach eine Verschiebung bei einem vorzeichenlosen Typ durch.
unsigned int result = (unsigned int)valueToBeShifted >> shiftAmount;
Beachten Sie, dass es dafür keine Garantie gibt >>
auf einem signierten Typ gibt Ihnen eine signierte Verschiebung in C – dies ist implementierungsdefiniertes Verhalten. Die meisten gebräuchlichen Implementierungen erzeugen jedoch eine vorzeichenbehaftete Verschiebung, wenn der Typ vorzeichenbehaftet ist.
>>>
ist eine vorzeichenlose Rechtsverschiebung, also würde ich denken, dass dies in C dasselbe wäre wie
unsigned int foo;
unsigned int bar = foo >> whatever;