如何在C/C++中执行无符号右移(在Java中>> >>)?

cha*_*ged 24 c java bit-manipulation

如何在C/C++中执行无符号右移(在Java中>> >>)?

Ste*_*non 27

在C中,为了获得无符号移位,您只需对无符号类型进行移位.

unsigned int result = (unsigned int)valueToBeShifted >> shiftAmount;
Run Code Online (Sandbox Code Playgroud)

请注意,无法保证>>在签名类型上为您提供C中的签名转换 - 这是实现定义的行为.但是,如果类型已签名,则最常见的实现会生成带符号的移位.


Joh*_*ler 17

>>> 是无符号的右移,所以我认为在C中这将是相同的

unsigned int foo;
unsigned int bar = foo >> whatever;
Run Code Online (Sandbox Code Playgroud)