Hex Twos Арифметика дополнения

Я пытаюсь сделать следующую проблему:

 E8B2035D
-FB60528D
----------

В котором представленные целые числа являются шестнадцатеричными представлениями двоичных чисел с комплиментами в двоичном двоичном коде. Каков наилучший подход для решения этой проблемы и обнаружения переполнения?

1 ответ

Решение

Вычитание становится сложением, когда вы используете два дополнения. Поэтому я бы взял дополнение второго числа, а затем добавил их:

Как вы знаете, дополнение числа к двум начинается с превращения каждого 1 в 0 и наоборот (удобное эмпирическое правило: делать 15 - число, поэтому F -> 0, E -> 1, D -> 2 и т. Д.):

FB60528D --> 049FAD72

Затем добавьте один к номеру (в этом случае 2 + 1 = 3и нести нести)

049FAD73 -- the two's complement of FB60528D

Теперь мы добавляем числа, используя обычные правила сложения:

E8B2035D
049FAD73 +
----------

D + 3 = 10 : write 0, carry 1
1 + 5 + 7  : write D, carry 0
3 + D = 10 : write 0, carry 1
1 + 0 + A  : write B, carry 0
2 + F      : write 1, carry 1 
1 + B + 9  : write 5, carry 1
1 + 8 + 4  : write D, carry 0
E + 0      : write E

Окончательный результат (еще в двух дополнениях)

ED51B0D0

Вы бы обнаружили переполнение, если последний расчет привел к переносу (число> F).

Другие вопросы по тегам