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

2022-09-01 12:51:25

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


答案 1

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

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

请注意,不能保证在有符号类型上为您提供 C 中的有符号移位 - 这是实现定义的行为。但是,如果类型已签名,则大多数常见实现都会生成已签名的移位。>>


答案 2

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

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

推荐