Вход Расширение int в C

Так что у меня возникли проблемы с получением поля типа int и последующим подписанием его расширения. У меня есть метод, который получает поле Int.

getField(int value, int hi, int lo);

Ценность это то, что яЯ беру поле с, а привет и вот размер поля.

Так что я могу вызвать этот метод getField внутри getFieldSignExtended (int value, int hi, int lo), но как мне пойти на знак расширения его?

напримерvalue = 7, hi = 1, lo = 0

getField(7, 1, 0); возвращает 3, потому что 7 в двоичном виде - это 111, а hi и lo принимают поле от 0 до 1.

При возвращении 3 из getField я получаю, что значение равно 0x0003.

То, что у меня есть, работает с позитивами, но сильно портит негативы. И когда я говорюиспортить" Я имею в виду, что это не работает вообще. Так что, если я попытаюсь использовать его на -1, он будет показан как большой int вместо отрицательного.

Спасибо за любую помощь! :]

Изменить: Извините, я перепутал себя и некоторых из вас с противоречивым утверждением: P. Исправлена.'

Ответы на вопрос(2)

Ваш ответ на вопрос