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