Как я выполняю неподписанный сдвиг вправо (>>> в Java) в C/C++?
>>>
- это беззнаковый сдвиг вправо, поэтому я думаю, что в C это будет то же самое, что
unsigned int foo;
unsigned int bar = foo >> whatever;
В C, чтобы получить беззнаковый сдвиг, вы просто делаете сдвиг для беззнакового типа.
unsigned int result = (unsigned int)valueToBeShifted >> shiftAmount;
Обратите внимание, что нет никакой гарантии, что >>
на знаковом типе даст вам знаковый сдвиг в C - это поведение определяется реализацией. Однако большинство распространенных реализаций дают знаковый сдвиг, если тип знаковый.