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

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

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

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

在C中,要获得无符号移位,只需对无符号类型进行移位。

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

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