Два дополнения, почему имя "два"
Я знаю unsigned, два дополнения, их дополнение и значение знака, а также разницу между ними, но мне интересно:
- почему он называется двумя (или одними) дополнениями, так есть ли более обобщенное дополнение N?
- каким образом эти гении вывели такой естественный способ представления отрицательных чисел?
Ответы
Ответ 1
Два дополнения произошли, когда кто-то понял, что "будет отрицательным", вычитая 1
из 0
и позволяя разворачивать биты фактически упрощенной арифметикой, поскольку никаких специальных проверок не требуется, чтобы проверить, является ли число отрицательным или не. Другие решения дают вам разрыв между -1
и 0
. Единственная странность с двумя дополнениями заключается в том, что вы получаете еще одно отрицательное число в своем диапазоне, чем у вас есть положительные числа. Но тогда другие решения дают вам странные вещи, такие как +0
и -0
.
Согласно Википедии, само название происходит из математики и основано на способах сделать вычитание проще, когда у вас ограниченное число мест. Система на самом деле является "дополнением радикса", и поскольку двоичный код является базовым, это становится "двумя дополнениями". И получается, что "одно дополнение" названо в "уменьшенном дополнении радикса", которое является основанием минус один. Если вы посмотрите на это для десятичного числа, значения, лежащие в основе имен, имеют больше смысла.
Метод дополнений (Wikipedia)
Ответ 2
Вы можете сделать то же самое в других базах. В десятичной форме у вас будет 9 дополнений, где каждая цифра X заменяется на 9-X, а 10 дополнений числа - 9 дополнений плюс один. Затем вы можете вычесть, добавив 10 дополнений, предполагая фиксированное количество цифр.
Пример - в четырехзначной системе, учитывая вычитание
0846
-0573
=0273
Сначала найдите 9-дополнение из 573, которое равно 9-0 9-5 9-7 9-3 или 9426
10 комплемента 573 равно 9426 + 1, или 9427
Теперь добавьте 10 дополнений и выбросьте все, что содержит 4 цифры
0846
+9427 .. 10 complement of 573
= 10273 .. toss the 'overflow' digit
= 0273 .. same answer
Очевидно, что простой пример. Но аналогия носит. Интересно, что самое отрицательное значение в 4-значном 10 дополнении? 5000
Что касается этимологии, я бы предположил, что термин 1 дополнение является дополнением в том же смысле, что и дополнительный угол от геометрии, равный 90 градусам минус угол, т.е. часть, оставшаяся после вычитания заданного из некоторое стандартное значение. Не знаете, как дополнение "2"
имеет смысл, однако.