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
).