C++で11ビットの数値を32ビットの数値に符号拡張するにはどうすればよいですか?符号が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));
}
次の関数は、32ビットに16ビットの符号拡張のために正常に動作します:
unsigned int signExtend16to32ui(short i) {
return static_cast<unsigned int>(static_cast<int>(i));
}
何が返され、何を期待していますか?小さな例ですか? – hmatar