Как преобразовать шестнадцатеричное вручную в десятичное с дополнением до двух - PullRequest
0 голосов
/ 16 февраля 2019

Кажется, я не могу найти ответ о том, как преобразовать шестнадцатеричное в десятичное с примером дополнения до двух AD100002 Я уже знаю, как выполнить вычисление для беззнакового, но не для дополнения со знаком 2.Любая помощь будет или проверить) (спасибо за ваше время)
(Извините за плохой английский).

{unsigned} -> (AD100002 = (10 × 16⁷) + (13 × 16⁶) + (1 × 16⁵) + (0 × 16⁴) + (0 × 16³) + (0 × 16²) + (0 × 16¹) + (2 × 16⁰) = 2903506946).

1 Ответ

0 голосов
/ 16 февраля 2019

Основное объяснение дополнения к двоичному / шестнадцатеричному значению состоит в том, чтобы перевернуть каждую цифру и затем добавить 1. Например, скажем, у нас было следующее значение:

0xA5

Первое, что нужно сделать, этопреобразовать значение в двоичное число:

0xA5 -> 10100101

Чтобы выполнить дополнение до двух, переверните все биты:

10100101
   ||
   \/
01011010

, а затем добавьте 1:

01011011

Преобразование этого двоичного числа в десятичное число дает 91. Таким образом, комплемент двоичного значения шестнадцатеричного значения «0xA5» равен -91.

(Если вы рассматриваете шестнадцатеричное значение как представление целого числа со знаком со знаком, выполняйте дополнение к двум только в том случае, если старший двоичный бит в двоичном представлении равен 1. Если он равен 0, обрабатывайте остальные биты как нормальные.)

...