В математике и вычислительном, то метод комплементов представляет собой метод для кодирования симметричного спектра положительных и отрицательных чисел таким образом, что они могут использовать один и тот же алгоритм (аппаратное обеспечение) для того во всем диапазоне. Для заданного количества разрядов половина возможных представлений чисел кодирует положительные числа, другая половина представляет их соответствующие аддитивные инверсии. Пары взаимно аддитивных обратных чисел называются дополнениями. Таким образом, вычитание любого числа осуществляется добавлением его дополнения. Изменение знака любого числа кодируется путем генерации его дополнения, что можно сделать с помощью очень простого и эффективного алгоритма. Этот метод обычно использовался в механических калькуляторах и до сих пор используется в современных компьютерах. Обобщенная концепция радиксного дополнения (как описано ниже) также полезна в теории чисел, например, в теореме Миди.
Дополнение девяток из числа заданного в десятичном представлении формируются путем замены каждой цифры с девятью минус этой цифрой. Чтобы вычесть десятичное число y ( вычитаемое ) из другого числа x ( уменьшаемое ), можно использовать два метода:
В первом методе к y добавляется девятка x. Затем формируется дополнение к полученному результату до девяток для получения желаемого результата.
Во втором методе дополнение y до девяти добавляется к x, а единица прибавляется к сумме. Крайняя левая цифра «1» результата отбрасывается. Отказ от крайней левой цифры «1» особенно удобен на калькуляторах или компьютерах, которые используют фиксированное количество цифр: ей некуда деваться, поэтому она просто теряется во время вычисления. Дополнение до девяти плюс один известно как дополнение до десяти.
Метод дополнений может быть распространен на другие системы счисления ( корни ); в частности, он используется на большинстве цифровых компьютеров для выполнения вычитания, представления отрицательных чисел с основанием 2 или двоичной арифметики, а также для проверки потери значимости и переполнения при вычислении.
Radix дополнение из п числа цифр у в поразрядном Ь, по определению,. Радикс комплемент наиболее легко получить путем добавления 1 к уменьшенному натальному комплементу, которая. Поскольку цифра повторяется n раз (потому что ; см. Также Формулу геометрического ряда ), уменьшенное дополнение основания числа находится путем дополнения каждой цифры относительно (то есть, вычитая каждую цифру в y из).
Вычитание y из x может быть выполнено следующим образом. Добавление уменьшенного базисного дополнения х к у приводит к значению или которое является уменьшенной Radix дополнением. Уменьшенное дополнение системы счисления - это значение. В качестве альтернативы добавление дополнения системы счисления y к x приводит к значению или. Предполагая, что y ≤ x, результат всегда будет больше или равен, а отбрасывание начальной «1» равносильно вычитанию, получению результата или просто желаемому результату.
В десятичной системе счисления основание системы счисления называется дополнением до десяти, а дополнение с уменьшенным основанием - дополнением до девяти. В двоичной системе основание системы счисления называется дополнением до двух, а суженная система счисления дополняет дополнение до единиц. Названия дополнений в других базах аналогичны. Некоторые люди, особенно Дональд Кнут, рекомендуют использовать размещение апострофа, чтобы различать радиксное дополнение и уменьшенное радиксное дополнение. В этом случае дополнение до четырех относится к основанию системы счисления в системе счисления, а дополнение до четырех - это дополнение к уменьшенной системе счисления по системе счисления 5. Однако различие не имеет значения, когда основание системы счисления является очевидным (почти всегда), а тонкая разница в размещении апострофов - не обычная практика. Большинство авторы используют свои и ДЕВЯТЬ в дополнение, и многие руководства стиля оставить из апострофа, рекомендуя одни и девятки комплемента.
Цифра | Дополнение девяток |
---|---|
0 | 9 |
1 | 8 |
2 | 7 |
3 | 6 |
4 | 5 |
5 | 4 |
6 | 3 |
7 | 2 |
8 | 1 |
9 | 0 |
Дополнение до девяти десятичной цифры - это число, которое нужно добавить к нему, чтобы получить 9; дополнение до 3 равно 6, до 7 равно 2 и т. д., см. таблицу. Чтобы сформировать дополнение до девяти большего числа, каждая цифра заменяется дополнением до девяти.
Рассмотрим следующую задачу на вычитание:
873 [x, the minuend] - 218 [y, the subtrahend]
Мы вычисляем дополнение до девяток минуемого, 873. Добавляем это к вычитаемому 218, затем вычисляем дополнение до девяток результата.
126 [nines' complement of x = 999 - x] + 218 [y, the subtrahend]
знак равно
344 [999 - x + y]
Теперь посчитайте дополнение до девяток результата.
344 [result] 655 [nine's complement of 344 = 999 - (999 - x + y) = x - y, the correct answer]
Мы вычисляем дополнение до девяти до 218, что составляет 781. Поскольку 218 состоит из трех цифр, это то же самое, что вычитание 218 из 999.
Затем берется сумма x и девятки дополнения к y:
873 [x] + 781 [nines' complement of y = 999 - y]
знак равно
1654 [999 + x - y]
Затем первая цифра «1» отбрасывается, давая 654.
1654 -1000 [-(999 + 1)]
знак равно
654 [x - y - 1]
Это еще не так. По сути, мы добавили 999 к уравнению на первом этапе. Затем мы удалили 1000, когда опустили ведущую 1 в результате 1654 выше. Таким образом, полученный нами ответ (654) на единицу меньше правильного. Чтобы исправить это, мы должны добавить к нашему ответу 1:
654 + 1
знак равно
655 [x - y]
Добавление 1 дает 655, правильный ответ на нашу исходную задачу вычитания. Мы могли бы пропустить этот последний шаг добавления 1, если бы вместо этого взяли десятичное дополнение y на первом шаге.
В следующем примере результат вычитания содержит меньше цифр, чем x:
123410 [x, the minuend] - 123401 [y, the subtrahend]
Используя первый метод, сумма дополнений до девяти x и y равна
876589 [nines' complement of x] + 123401 [y]
знак равно
999990
Дополнение 999990 до девяток равно 000009. Удаление ведущих нулей дает 9 желаемый результат.
Если вычитаемое значение y содержит меньше цифр, чем минимальное значение x, во втором методе необходимо добавить начальные нули. Эти нули становятся ведущими девятками при взятии дополнения. Например:
48032 [x] - 391 [y]
можно переписать
48032 [x] - 00391 [y with leading zeros]
Замена 00391 его дополнением до девяти и добавлением 1 дает сумму:
48032 [x] + 99608 [nines' complement of y] + 1
знак равно
147641
Если отбросить первую цифру "1", получится правильный ответ: 47641.
Двоичная цифра | Ones' дополнение |
---|---|
0 | 1 |
1 | 0 |
Метод дополнений особенно полезен в двоичной системе счисления (основание 2), поскольку дополнение единиц очень легко получить инвертированием каждого бита (изменением «0» на «1» и наоборот). Добавление 1 для получения двух дополнений может быть выполнено путем имитации переноса в младший бит. Например:
0110 0100 [x, equals decimal 100] - 0001 0110 [y, equals decimal 22]
становится суммой:
0110 0100 [x] + 1110 1001 [ones' complement of y = 1111 1111 - y] + 1 [to get the two's complement = 1 0000 0000 - y] =========== 10100 1110 [x + 1 0000 0000 - y]
Если отбросить начальную «1», получим ответ: 0100 1110 (равно 78 в десятичной системе).
Метод дополнений обычно предполагает, что операнды положительны и что y ≤ x, логические ограничения, учитывая, что сложение и вычитание произвольных целых чисел обычно выполняется путем сравнения знаков, добавления двух или вычитания меньшего из большего и получения правильного результата. подписать.
Посмотрим, что будет, если x lt; y. В этом случае цифра «1» после добавления не будет зачеркнута, так как она будет меньше. Например (в десятичном формате):
185 [x] - 329 [y]
Дополнение y и добавление дает:
185 [x] + 670 [nines' complement of y] + 1
знак равно
856
На данный момент нет простого способа завершить вычисление вычитанием (в данном случае 1000); нельзя просто игнорировать начальную единицу. Ожидаемый ответ - -144, что не так уж и далеко, как кажется; 856 - это десять дополнений к 144. Эту проблему можно решить несколькими способами:
Метод дополнений использовался во многих механических калькуляторах в качестве альтернативы вращению шестерен в обратном направлении. Например:
В цифровых компьютерах повсеместно используется метод дополнений, независимо от представления чисел со знаком. Однако требуемая схема зависит от представления:
Метод дополнений использовался для исправления ошибок при ведении бухгалтерских книг от руки. Чтобы удалить запись из столбца чисел, бухгалтер может добавить новую запись с десятичным дополнением числа для вычитания. Над цифрами этой записи была добавлена полоса для обозначения ее особого статуса. Затем можно было добавить весь столбец цифр, чтобы получить скорректированный результат.
Дополнение суммы удобно для кассиров, делающих сдачу для покупки из валюты в единственном номинале 1, возведенного в целую степень основы валюты. Для десятичных валют это 10, 100, 1000 и т. Д., Например купюра на 10 долларов.
В начальных школах учеников иногда учат методу дополнений как быстрому способу, используемому в ментальной арифметике. Вычитание выполняется путем добавления десятичного дополнения к вычитаемому, которое является дополнением девяти плюс 1. Результат этого сложения используется, когда ясно, что разница будет положительной, в противном случае с ним используется десятичное дополнение результата сложения. отмечен как отрицательный. Тот же метод работает для вычитания на арифметической машине.