В чём разница между алгоритмами операций в дополнительных и обратных кодах?
Я помню, что обратный код - это !прямой, а дополнительный - это !прямой + 1 в младший разряд. В чём будет отличие в алгоритмах арифметических операций (сложение, умножение и т.д.), если числа даны в обратном коде или дополнительном коде.
Насколько я помню, различие в операции сложение, когда в обратном при переполнении в младший добавляется 1, а в дополнительном нет, поправьте если нет так.
В дополнительном коде число -x записывается как 2^n-x. Поэтому его можно просто прибавлять/вычитать/умножать - лишнее 2^n не влезает в разрядность переменной и просто будет проигнорированно.
В обратном коде у вас есть лишнее -1, которое надо компенсировать. прибавлять при вычитании, вычитать при сложении и прибавлять множитель при умножении.
Еще, в обратном коде никак не записать 2^(n-1), потому что число 0 представимо 2 раза в виде 00000000 и 100000000.