Мне нужно сделать расширение знака для 16-битного целого числа, и по какой-то причине он, похоже, не работает должным образом. Может ли кто-нибудь сказать мне, где ошибка в коде? Я работал над этим несколько часов.
int signExtension(int instr) {
int value = (0x0000FFFF & instr);
int mask = 0x00008000;
int sign = (mask & instr) >> 15;
if (sign == 1)
value += 0xFFFF0000;
return value;
}
Инструкция (instr) состоит из 32 бита, а внутри у меня есть 16-битное число.