Как выполнить беззнаковый сдвиг вправо (>>> в Java) в C/С++?

Как выполнить беззнаковый сдвиг вправо ( → > в Java) в C/С++?

Ответ 1

>>> - беззнаковый сдвиг вправо, поэтому я думаю, что в C это будет то же самое, что

unsigned int foo;
unsigned int bar = foo >> whatever;

Ответ 2

В C, чтобы получить сдвиг без знака, вы просто выполняете сдвиг на неподписанном типе.

unsigned int result = (unsigned int)valueToBeShifted >> shiftAmount;

Обратите внимание, что нет гарантии, что >> на подписанном типе дает вам подписанный сдвиг в C - это поведение, определенное реализацией. Однако большинство распространенных реализаций выдает подписанный сдвиг, если тип подписан.