Как мне выполнить беззнаковое смещение вправо (>>> в Java) в C / C ++? - PullRequest
24 голосов
/ 12 марта 2010

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

Ответы [ 2 ]

27 голосов
/ 12 марта 2010

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

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

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

17 голосов
/ 12 марта 2010

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

unsigned int foo;
unsigned int bar = foo >> whatever;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...