Вычитание двоичных чисел немного отличается от вычитания десятичных чисел.
Заимствование
1
Запишите двоичные числа друг под другом — меньшее число под большим. Если меньшее число имеет меньше цифр, выровняйте его по правому краю (так, как вы записываете десятичные числа при их вычитании).
2
Некоторые задачи на вычитание двоичных чисел ничем не отличаются от вычитания десятичных чисел. Запишите числа друг под другом и, начиная справа, найдите результат вычитания каждой пары чисел. Вот несколько простых примеров:
- 1 — 0 = 1
- 11 — 10 = 1
- 1011 — 10 = 1001
3
Рассмотрим более сложную задачу. Необходимо запомнить только одно правило, чтобы решать задачи на вычитание двоичных чисел. Это правило описывает заимствование цифры слева, чтобы вы могли вычесть 1 из 0 (0 — 1). Решим две задачи при помощи метода заимствования.
- 110 — 101 = ?
4
В первом столбце справа вы получаете разность 0 — 1. Для ее вычисления необходимо позаимствовать цифру слева (из разряда десятков).
- Во-первых, зачеркните 1 и замените ее на 0, чтобы получить такую задачу: 1010 — 101 = ?
- Вы вычли («позаимствовали») 10 из первого числа, поэтому вы можете написать это число вместо цифры, стоящей справа (в разряд единиц). 101100 — 101 = ?
5
Вычтите цифры в правом столбце. В нашем примере:
- 101100 — 101 = ?
- Правый столбец: 10 — 1 = 1. Если вы не поняли, как получить такой ответ, прочитайте эту статью:
- 102 = (1 x 2) + (0 x 1) = 210 (цифры нижнего регистра обозначают систему счисления, в которой записаны числа).
- 12 = (1×1) = 110.
- Таким образом, в десятичной системе эта разность записывается в виде: 2 — 1 = 1.
6
Вычтите цифры в оставшихся столбцах. Теперь это легко сделать (работайте со столбцами, двигаясь справа налево):
- 101100 — 101 = __1 = _01 = 001 = 1.
7
Решите сложную задачу. В таких задачах придется «заимствовать» цифры несколько раз только для того, чтобы вычесть цифры в одном столбце. Например, решите следующую задачу: 11000 — 111. Нельзя «заимствовать» цифры у 0, поэтому передвигайтесь к следующей цифре слева (до тех пор, пока вы не достигнете 1).
- 10110000 — 111 =
- 10111001000 — 111 = (запомните: 10 — 1 = 1)
- 10111001100100 — 111 =
- Вот как это записывается в более понятном виде: 1011100 — 111 =
- Вычислите разность цифр во всех столбцах (двигаясь справа налево): _ _ _ _ 1 = _ _ _ 0 1 = _ _ 0 0 1 = _ 0 0 0 1 = 1 0 0 0 1
8
Проверьте ответ. Есть три способа сделать это.[1]
Быстрый способ — откройте двоичный онлайн калькулятор и введите в него условия задачи. Два других метода подразумевают проверку ответа вручную (они могут пригодиться вам на экзамене).- Сложите двоичные числа, чтобы проверить ответ. Сложите ответ с меньшим числом; вы должны получить большее число. В последнем примере (11000 — 111 = 10001): 10001 + 111 = 11000, то есть ответ правильный.
- Кроме того, вы можете преобразовать двоичные числа в десятичные и проверить ответ. В последнем примере (11000 — 111 = 10001) при преобразовании вы получите: 24 — 7 = 17, то есть ответ правильный.
Дополнение
1
Запишите двоичные числа друг под другом так, как вы записываете десятичные числа при их вычитании. Этот метод используется компьютерами для вычитания двоичных чисел, так как он основан на более эффективном алгоритме. Однако простому человеку, привыкшему вычитать десятичные числа, этот метод может показаться более сложным (если вы программист, обязательно ознакомьтесь с этим методом вычитания двоичных чисел).[2]
- Рассмотрим пример: 101 — 11 = ?
2
Если значность чисел разная, к числу с меньшей значностью слева припишите соответствующее количество 0. Например, если даны числа 101 (трехзначное) и 11 (двузначное), превратите двузначное число в трехзначное, приписав ему слева один 0: 011.
- 101 — 011 = ?
3
В вычитаемом числе поменяйте цифры: каждую 1 поменяйте на 0, а каждый 0 на 1. В нашем примере вычитаемое превращается в: 011 → 100.
- На самом деле мы «забираем дополнение у единицы», то есть вычитаем каждую цифру из 1. Это работает в двоичной системе, так как у такой «замены» может быть только два возможных результата: 1 — = 1 и 1 — 1 = .
4
5
Теперь вместо вычитания сложите два двоичных числа.
- 101 + 101 = 1010
- Если вы не знаете, как складывать двоичные числа, прочитайте эту статью.
6
В полученном результате игнорируйте любую цифру, стоящую первой слева (так как вы получили число не той значности). В нашем примере вы складывали трехзначные числа (101 + 101), а получили четырехзначный ответ (1010). Поэтому зачеркните первую цифру слева, и вы получите окончательный ответ вашей задачи.[3]
- 1010 = 10
- Таким образом, 101 — 011 = 10
- Если лишней цифры нет, то вы вычитали большее число из меньшего. Смотрите раздел «Советы» о том, как решать такие задачи.
7
Попробуйте применить этот метод к десятичным числам. Этот метод называется «дополнение к двойке», так как замена цифр приводит к «дополнению к единице», а затем к полученному числу прибавляется 1.[4]
Для лучшего уяснения этого метода рассмотрим следующий пример:- 56 — 17
- Так как в примере рассматриваются десятичные числа, то каждую цифру вычитаемого (17) вычтите из 9: 99 — 17 = 82.
- Сложите два числа: 56 + 82. Если вы сравните это суммирование с исходной задачей (56 — 17), то вы увидите, что к исходной задаче прибавили 99.
- 56 + 82 = 138. Так как к исходной задаче прибавили 99, нужно вычесть 99 из ответа. Необходимо действовать аналогично вычислениям с двоичными числами: прибавьте к результату 1, а затем игнорируйте первую цифру слева.
- 138 + 1 = 139 → 139 → 39. Это решение исходной задачи (56 — 17 = 39).
Советы
- Для вычитания большего числа из меньшего, вычтите меньшее число из большего, а к ответу припишите знак «минус». Например, чтобы вычислить 11 — 100, вычислите 100 — 11, а затем к ответу припишите знак «минус» (это правило относится к вычитанию чисел в любой системе счисления, а не только в двоичной системе).
- Метод дополнения работает следующим образом: a — b = a + (2n — b) — 2n. Если n равно разрядности b, то 2n — b на единицу больше результата вычитания каждого разряда.
Об этой статье
Эту страницу просматривали 88 909 раз.
Была ли эта статья полезной?
Источник
Двоичная арифметика
Правила двоичной арифметики
Двоичное сложение
В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:
При сложении ( ) возникает два случая:
- когда входной перенос равен , получаем :
- когда входной перенос равен , получаем :
Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.
Двоичное вычитание
Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 3.2, посвященном двоичной арифметике со знаками. В простейшем случае, для каждого разряда, правила двоичного вычитания имеют вид:
Когда производится вычитание ( ) осуществляется займ из более старшего разряда. Знак вопроса означает, что разряд уменьшаемого изменяется в результате займа по правилу:
При вычитании (0 — 1) в разряде разности получается 1, разряды уменьшаемого, начиная со следующего, изменяются на противоположные (инвертируются) до первой встречной единицы (включительно). После этого производится вычитание из измененных разрядов уменьшаемого.
Рассмотрим несколько примеров вычитания многоразрядных чисел (из большего числа вычитается меньшее).
Очевидно, что как в десятичном, так и в двоичном коде, складывать значительно проще, чем вычитать. Поэтому большое распространение получила двоичная арифметика с учетом знаков чисел, где вычитание заменяется сложением чисел с учетом их знака. При этом уже не имеет значения соотношение чисел между собой, какое из них больше — вычитаемое или уменьшаемое. Знак разности получается автоматически.
Двоичная арифметика с учетом знаков чисел
Прямой, обратный и дополнительный коды
В двоичном коде знак числа представляет собой разряд, приписываемый слева от значащих разрядов числа. Знак » » обозначается логическим , знак » » — логической . Для наглядности все примеры будем рассматривать для целых чисел, отделяя знаковый разряд точкой.
Прямой код (ПК) и для отрицательных, и для положительных чисел образуется одинаково, простым дописыванием знакового разряда.
Так, в восьмиразрядном формате
Обратный код (ОК) для положительных чисел совпадает с прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел значащие разряды инвертируются (нули заменяются на единицы, единицы — на нули), после чего приписывается знак.
Для того же числа обратный код имеет вид: , .
Недостатком обратного кода является то, что одно и то же число и записывается по-разному: , , что может вызвать нежелательное разночтение работы логической схемы. Поэтому предпочтительным является дополнительный код.
Дополнительный код (ДК) для положительных чисел совпадает с обратным и прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел дополнительный код на 1 больше, чем обратный. После образования значащих разрядов приписывается знаковый разряд.
Для значащих разрядов отрицательного числа справедлива формула:
Напишем число в 7-разрядном дополнительном коде:
Таким образом в дополнительном коде , следовательно, указанный недостаток обратного кода преодолен.
Рассмотрим образование дополнительного кода для числа 10. Для положительного числа , а для отрицательного числа дополнительный ко д получается следующим образом:
Для замены вычитания сложением применяется и обратный, и дополнительный коды, при этом в каждом из них действуют свои правила.
Двоичная арифметика в дополнительном коде
При решении во избежание типовых ошибок рекомендуется придерживаться следующей последовательности действий. Допустим, заданы два десятичных числа, тогда необходимо:
- перевести десятичные числа в двоичный код;
- уравнять форматы полученных двоичных чисел;
- если знаки чисел одинаковые, добавить по одному резервному нулю слева от каждого числа во избежание переполнения;
- получить дополнительные коды чисел;
- приписать знаковые разряды;
- сложить полученные коды по правилам двоичного сложения;
- перенос из знакового разряда (если он есть) отбросить;
- результат получен в дополнительном коде, поэтому для проверки значащих разрядов отрицательного числа необходимо сделать вычисления, противоположные формуле (11.3): сначала вычислить обратный код по формуле , после чего произвести инверсию полученного числа.
Для наглядности возьмем два десятичных числа, например, и , и сделаем все возможные варианты вычислений:
- .
Число положительное, поэтому ОК=ПК, для проверки числа нужно перевести его значащие разряды в десятичный код по (П3-2): .
- . Сначала получим дополнительный код отрицательного числа :
Здесь важно уяснить, что крайние левые нули в значащих разрядах сокращать нельзя, поскольку они являются значимыми. Иными словами, все вычисления для каждого примера производятся в неизменном формате, в данном случае в примере (б) — это шесть значащих разрядов, т.е. столько, сколько содержится в большем числе.
Вновь получили знак числа и его значащие разряды, занимающие жестко заданные позиции в выбранном формате числа. Поскольку получено отрицательное число, то ДК ПК, для проверки его значащих разрядов нужно сначала вычислить обратный код, затем перевести его в прямой код инверсией —
а затем уже перевести его в десятичный код по (П3-2): .
- — Сначала получим ДК отрицательного числа .
После этого произведем вычисления:
Получено положительное число, поэтому , для проверки результата нужно только перевести значащие разряды в десятичный код: .
- — Сначала получим дополнительный код отрицательных чисел. Для числа он получается следующим образом:
А для числа —
Сложим полученные числа в том же формате:
Поскольку число отрицательное, . Для проверки значащих разрядов числа нужно сначала вычислить обратный код, после чего перевести его в прямой код инверсией —
И только после этого полученное число проверяется переводом в десятичный код по (11.2): .
Источник
Сложение двоичных чисел
Двоичные числа складываются по правилам, приведенным в таблице:
Пример:
Сложить два числа 11110010 и 10101010
+ 11110010
Вычитание двоичных чисел
Вычитания двоичных чисел заменим сложением. Сначала преобразуем вычитаемое в дополнительный код. Для получения дополнительного кода, сначала инвертируем число, а потом к нему прибавим двоичную единицу. Инвертировать число, значит, записать его в обратном коде, т. е. там, где были единицы записать 0, а где были нули — записать единицы. Операцию инвертирования обозначим добавлением к числу частицы NOT. NOT10101010 = 01010101. К обратному коду прибавим 1 и получим: 1010110 (первый ноль можно опустить). 10101100 — это дополнительный код числа 10101010.
Пример 1:
11110010-10101010 ?
- Получим обратный код not10101010=10101010
- Дополнительный код:
10101010+1=10101011 - Сложим 11110010+1010110=1001000 (старший разряд отбрасываем, так как разрядность результата должна быть равна 8 двоичным разрядам, как уменьшаемое и ведущий ноль не пишем).
Пример 2:
110 — 11 ?
Если разрядность вычитаемого меньше, чем разрядность уменьшаемого, то к вычитаемому надо сначала слева дописать недостающие нули, чтобы разрядности чисел были одинаковыми, а потом получать его обратный код.
- Допишем ноль слева 11 = 011
- NOT011 = 100
- Дополнительный код 100 + 1 = 101
- Сложим 110 + 101 = 1011, старшую единицу отбрасываем, т. к. сохраняем разрядность уменьшаемого, ноль в начале числа можно не писать.
- Ответ 110 — 11 = 11
Еще один интересный способ выполнения вычитания связан с понятием дополнительного кода, который позволяет свести вычитание к сложению. Получается число в дополнительном коде исключительно просто, берём число, заменяем нули на единицы, единицы наоборот заменяем на нули и к младшему разряду добавляем единицу. Например, 10010, в дополнительном коде будет 011011.
Правило вычитания через дополнительный код утверждает, что вычитание можно заменить на сложение если вычитаемое заменить на число в дополнительном коде.
Пример: 34 — 22 = 12
Запишем этот пример в двоичном виде. 100010 — 10110 = 1100
Дополнительный код числа 10110 будет такой
01001 + 00001 = 01010. Тогда исходный пример можно заменить сложением так 100010 + 01010 = 101100 Далее необходимо отбросить одну единицу в старшем разряде. Если это сделать то, получим 001100. Отбросим незначащие нули и получим 1100, то есть пример решён правильно.
Дополнительный код (представление числа)
Материал из Википедии — свободной энциклопедии
Это версия страницы, ожидающая проверки. Последняя подтверждённая версия датируется 21 января 2010.
Дополнительный код (англ. two’s complement, иногда twos-complement) — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение). Либо вычитанием числа из нуля.
Дополнительный код (дополнение до 2) двоичного числа получается добавлением 1 к младшему значащему разряду его дополнения до 1. [1]
Дополнение до 2 двоичного числа определяется как величина полученная вычитанием числа из наибольшей степени двух (из 2N для N-битного дополнения до 2).[2]
Date: 2015-10-21; view: 879; Нарушение авторских прав
Источник
Двоичная арифметика
Правила двоичной арифметики
Двоичное сложение
В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:
При сложении ( ) возникает два случая:
- когда входной перенос равен , получаем :
- когда входной перенос равен , получаем :
Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.
Двоичное вычитание
Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 3.2, посвященном двоичной арифметике со знаками. В простейшем случае, для каждого разряда, правила двоичного вычитания имеют вид:
Когда производится вычитание ( ) осуществляется займ из более старшего разряда. Знак вопроса означает, что разряд уменьшаемого изменяется в результате займа по правилу:
При вычитании (0 — 1) в разряде разности получается 1, разряды уменьшаемого, начиная со следующего, изменяются на противоположные (инвертируются) до первой встречной единицы (включительно). После этого производится вычитание из измененных разрядов уменьшаемого.
Рассмотрим несколько примеров вычитания многоразрядных чисел (из большего числа вычитается меньшее).
Очевидно, что как в десятичном, так и в двоичном коде, складывать значительно проще, чем вычитать. Поэтому большое распространение получила двоичная арифметика с учетом знаков чисел, где вычитание заменяется сложением чисел с учетом их знака. При этом уже не имеет значения соотношение чисел между собой, какое из них больше — вычитаемое или уменьшаемое. Знак разности получается автоматически.
Двоичная арифметика с учетом знаков чисел
Прямой, обратный и дополнительный коды
В двоичном коде знак числа представляет собой разряд, приписываемый слева от значащих разрядов числа. Знак » » обозначается логическим , знак » » — логической . Для наглядности все примеры будем рассматривать для целых чисел, отделяя знаковый разряд точкой.
Прямой код (ПК) и для отрицательных, и для положительных чисел образуется одинаково, простым дописыванием знакового разряда.
Так, в восьмиразрядном формате
Обратный код (ОК) для положительных чисел совпадает с прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел значащие разряды инвертируются (нули заменяются на единицы, единицы — на нули), после чего приписывается знак.
Для того же числа обратный код имеет вид: , .
Недостатком обратного кода является то, что одно и то же число и записывается по-разному: , , что может вызвать нежелательное разночтение работы логической схемы. Поэтому предпочтительным является дополнительный код.
Дополнительный код (ДК) для положительных чисел совпадает с обратным и прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел дополнительный код на 1 больше, чем обратный. После образования значащих разрядов приписывается знаковый разряд.
Для значащих разрядов отрицательного числа справедлива формула:
Напишем число в 7-разрядном дополнительном коде:
Таким образом в дополнительном коде , следовательно, указанный недостаток обратного кода преодолен.
Рассмотрим образование дополнительного кода для числа 10. Для положительного числа , а для отрицательного числа дополнительный ко д получается следующим образом:
Для замены вычитания сложением применяется и обратный, и дополнительный коды, при этом в каждом из них действуют свои правила.
Двоичная арифметика в дополнительном коде
При решении во избежание типовых ошибок рекомендуется придерживаться следующей последовательности действий. Допустим, заданы два десятичных числа, тогда необходимо:
- перевести десятичные числа в двоичный код;
- уравнять форматы полученных двоичных чисел;
- если знаки чисел одинаковые, добавить по одному резервному нулю слева от каждого числа во избежание переполнения;
- получить дополнительные коды чисел;
- приписать знаковые разряды;
- сложить полученные коды по правилам двоичного сложения;
- перенос из знакового разряда (если он есть) отбросить;
- результат получен в дополнительном коде, поэтому для проверки значащих разрядов отрицательного числа необходимо сделать вычисления, противоположные формуле (11.3): сначала вычислить обратный код по формуле , после чего произвести инверсию полученного числа.
Для наглядности возьмем два десятичных числа, например, и , и сделаем все возможные варианты вычислений:
- .
Число положительное, поэтому ОК=ПК, для проверки числа нужно перевести его значащие разряды в десятичный код по (П3-2): .
- . Сначала получим дополнительный код отрицательного числа :
Здесь важно уяснить, что крайние левые нули в значащих разрядах сокращать нельзя, поскольку они являются значимыми. Иными словами, все вычисления для каждого примера производятся в неизменном формате, в данном случае в примере (б) — это шесть значащих разрядов, т.е. столько, сколько содержится в большем числе.
Вновь получили знак числа и его значащие разряды, занимающие жестко заданные позиции в выбранном формате числа. Поскольку получено отрицательное число, то ДК ПК, для проверки его значащих разрядов нужно сначала вычислить обратный код, затем перевести его в прямой код инверсией —
а затем уже перевести его в десятичный код по (П3-2): .
- — Сначала получим ДК отрицательного числа .
После этого произведем вычисления:
Получено положительное число, поэтому , для проверки результата нужно только перевести значащие разряды в десятичный код: .
- — Сначала получим дополнительный код отрицательных чисел. Для числа он получается следующим образом:
А для числа —
Сложим полученные числа в том же формате:
Поскольку число отрицательное, . Для проверки значащих разрядов числа нужно сначала вычислить обратный код, после чего перевести его в прямой код инверсией —
И только после этого полученное число проверяется переводом в десятичный код по (11.2): .
Источник