如何在 C++ 中将 11 位数字符号扩展为 32 位数字?
我有以下功能,但它没有按预期返回正确的符号扩展:
unsigned int signExtend11to32ui(int i) {
int mask = 2047; // 0x7FF or 0000 0111 1111 1111
return static_cast<unsigned int>(static_cast<int>(i & mask));
}
以下函数适用于 16 位到 32 位的符号扩展:
unsigned int signExtend16to32ui(short i) {
return static_cast<unsigned int>(static_cast<int>(i));
}