Преобразование шестнадцатеричного в двоичное и одно и два дополнения в 16 бит - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь преобразовать FFAD (шестнадцатеричное) в десятичное значение, а затем сделать одно и два дополнения к нему. FFAD представляется в виде 16-битного целого числа. Когда я конвертирую FFAD в базу 2, я получаю 1111111110101101.

Моя проблема в том, как мне узнать, отрицательное это число или нет?

У меня есть двоичный файл, теперь, чтобы сделать его дополняющим, я бы изменил последний бит с 0 на 1 и затем перевернул все биты, но как 16-битное целое число у меня больше нет доступных бит. Поскольку 16-й бит равен 1, значит ли это, что это отрицательное число? Как бы я сделал дополнение этого? Я просто все вокруг запутался с этой проблемой, и любые указатели будут с благодарностью.

1 Ответ

3 голосов
/ 05 октября 2011

Его минус, потому что он оставлен дополненным единицами. Заполнение нулями слева указывает на положительное число. Например, вот десятичные значения для трехразрядных чисел:

  • 011 = 3
  • 010 = 2
  • 001 = 1
  • 000 = 0
  • 111 = -1
  • 110 = -2
  • 101 = -3
  • 100 = -4

Обратите внимание, что числа, заполненные нулями, являются отрицательными, а числа, заполненные нулями, положительными.

Стандартная процедура для комплимента 2 состоит в том, чтобы отменить ваши биты, а затем добавить 1.

1111111110101101 становится 0000000001010010. Затем добавьте 1, чтобы получить 0000000001010011.

...