Вычитание становится дополнением при использовании двух дополнений. Поэтому я бы взял дополнение к второму числу, а затем добавлю их:
Как вы знаете, дополнение к числу чисел начинается, поворачивая каждый 1 на 0 и наоборот (удобное эмпирическое правило: сделать 15 - число , так что F -> 0, Е -> 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
).