Двоичная арифметика
Правила двоичной арифметики
Двоичное сложение
В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:
При сложении ( ) возникает два случая:
- когда входной перенос равен , получаем :
- когда входной перенос равен , получаем :
Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.
Двоичное вычитание
Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 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: 957; Нарушение авторских прав
Источник
Двоичная арифметика
Правила двоичной арифметики
Двоичное сложение
В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:
При сложении ( ) возникает два случая:
- когда входной перенос равен , получаем :
- когда входной перенос равен , получаем :
Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.
Двоичное вычитание
Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 3.2, посвященном двоичной арифметике со знаками. В простейшем случае, для каждого разряда, правила двоичного вычитания имеют вид:
Когда производится вычитание ( ) осуществляется займ из более старшего разряда. Знак вопроса означает, что разряд уменьшаемого изменяется в результате займа по правилу:
При вычитании (0 — 1) в разряде разности получается 1, разряды уменьшаемого, начиная со следующего, изменяются на противоположные (инвертируются) до первой встречной единицы (включительно). После этого производится вычитание из измененных разрядов уменьшаемого.
Рассмотрим несколько примеров вычитания многоразрядных чисел (из большего числа вычитается меньшее).
Очевидно, что как в десятичном, так и в двоичном коде, складывать значительно проще, чем вычитать. Поэтому большое распространение получила двоичная арифметика с учетом знаков чисел, где вычитание заменяется сложением чисел с учетом их знака. При этом уже не имеет значения соотношение чисел между собой, какое из них больше — вычитаемое или уменьшаемое. Знак разности получается автоматически.
Двоичная арифметика с учетом знаков чисел
Прямой, обратный и дополнительный коды
В двоичном коде знак числа представляет собой разряд, приписываемый слева от значащих разрядов числа. Знак » » обозначается логическим , знак » » — логической . Для наглядности все примеры будем рассматривать для целых чисел, отделяя знаковый разряд точкой.
Прямой код (ПК) и для отрицательных, и для положительных чисел образуется одинаково, простым дописыванием знакового разряда.
Так, в восьмиразрядном формате
Обратный код (ОК) для положительных чисел совпадает с прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел значащие разряды инвертируются (нули заменяются на единицы, единицы — на нули), после чего приписывается знак.
Для того же числа обратный код имеет вид: , .
Недостатком обратного кода является то, что одно и то же число и записывается по-разному: , , что может вызвать нежелательное разночтение работы логической схемы. Поэтому предпочтительным является дополнительный код.
Дополнительный код (ДК) для положительных чисел совпадает с обратным и прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел дополнительный код на 1 больше, чем обратный. После образования значащих разрядов приписывается знаковый разряд.
Для значащих разрядов отрицательного числа справедлива формула:
Напишем число в 7-разрядном дополнительном коде:
Таким образом в дополнительном коде , следовательно, указанный недостаток обратного кода преодолен.
Рассмотрим образование дополнительного кода для числа 10. Для положительного числа , а для отрицательного числа дополнительный ко д получается следующим образом:
Для замены вычитания сложением применяется и обратный, и дополнительный коды, при этом в каждом из них действуют свои правила.
Двоичная арифметика в дополнительном коде
При решении во избежание типовых ошибок рекомендуется придерживаться следующей последовательности действий. Допустим, заданы два десятичных числа, тогда необходимо:
- перевести десятичные числа в двоичный код;
- уравнять форматы полученных двоичных чисел;
- если знаки чисел одинаковые, добавить по одному резервному нулю слева от каждого числа во избежание переполнения;
- получить дополнительные коды чисел;
- приписать знаковые разряды;
- сложить полученные коды по правилам двоичного сложения;
- перенос из знакового разряда (если он есть) отбросить;
- результат получен в дополнительном коде, поэтому для проверки значащих разрядов отрицательного числа необходимо сделать вычисления, противоположные формуле (11.3): сначала вычислить обратный код по формуле , после чего произвести инверсию полученного числа.
Для наглядности возьмем два десятичных числа, например, и , и сделаем все возможные варианты вычислений:
- .
Число положительное, поэтому ОК=ПК, для проверки числа нужно перевести его значащие разряды в десятичный код по (П3-2): .
- . Сначала получим дополнительный код отрицательного числа :
Здесь важно уяснить, что крайние левые нули в значащих разрядах сокращать нельзя, поскольку они являются значимыми. Иными словами, все вычисления для каждого примера производятся в неизменном формате, в данном случае в примере (б) — это шесть значащих разрядов, т.е. столько, сколько содержится в большем числе.
Вновь получили знак числа и его значащие разряды, занимающие жестко заданные позиции в выбранном формате числа. Поскольку получено отрицательное число, то ДК ПК, для проверки его значащих разрядов нужно сначала вычислить обратный код, затем перевести его в прямой код инверсией —
а затем уже перевести его в десятичный код по (П3-2): .
- — Сначала получим ДК отрицательного числа .
После этого произведем вычисления:
Получено положительное число, поэтому , для проверки результата нужно только перевести значащие разряды в десятичный код: .
- — Сначала получим дополнительный код отрицательных чисел. Для числа он получается следующим образом:
А для числа —
Сложим полученные числа в том же формате:
Поскольку число отрицательное, . Для проверки значащих разрядов числа нужно сначала вычислить обратный код, после чего перевести его в прямой код инверсией —
И только после этого полученное число проверяется переводом в десятичный код по (11.2): .
Источник
Двоичная арифметика
Правила двоичной арифметики
Двоичное сложение
В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:
При сложении ( ) возникает два случая:
- когда входной перенос равен , получаем :
- когда входной перенос равен , получаем :
Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.
Двоичное вычитание
Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 3.2, посвященном двоичной арифметике со знаками. В простейшем случае, для каждого разряда, правила двоичного вычитания имеют вид:
Когда производится вычитание ( ) осуществляется займ из более старшего разряда. Знак вопроса означает, что разряд уменьшаемого изменяется в результате займа по правилу:
При вычитании (0 — 1) в разряде разности получается 1, разряды уменьшаемого, начиная со следующего, изменяются на противоположные (инвертируются) до первой встречной единицы (включительно). После этого производится вычитание из измененных разрядов уменьшаемого.
Рассмотрим несколько примеров вычитания многоразрядных чисел (из большего числа вычитается меньшее).
Очевидно, что как в десятичном, так и в двоичном коде, складывать значительно проще, чем вычитать. Поэтому большое распространение получила двоичная арифметика с учетом знаков чисел, где вычитание заменяется сложением чисел с учетом их знака. При этом уже не имеет значения соотношение чисел между собой, какое из них больше — вычитаемое или уменьшаемое. Знак разности получается автоматически.
Двоичная арифметика с учетом знаков чисел
Прямой, обратный и дополнительный коды
В двоичном коде знак числа представляет собой разряд, приписываемый слева от значащих разрядов числа. Знак » » обозначается логическим , знак » » — логической . Для наглядности все примеры будем рассматривать для целых чисел, отделяя знаковый разряд точкой.
Прямой код (ПК) и для отрицательных, и для положительных чисел образуется одинаково, простым дописыванием знакового разряда.
Так, в восьмиразрядном формате
Обратный код (ОК) для положительных чисел совпадает с прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел значащие разряды инвертируются (нули заменяются на единицы, единицы — на нули), после чего приписывается знак.
Для того же числа обратный код имеет вид: , .
Недостатком обратного кода является то, что одно и то же число и записывается по-разному: , , что может вызвать нежелательное разночтение работы логической схемы. Поэтому предпочтительным является дополнительный код.
Дополнительный код (ДК) для положительных чисел совпадает с обратным и прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел дополнительный код на 1 больше, чем обратный. После образования значащих разрядов приписывается знаковый разряд.
Для значащих разрядов отрицательного числа справедлива формула:
Напишем число в 7-разрядном дополнительном коде:
Таким образом в дополнительном коде , следовательно, указанный недостаток обратного кода преодолен.
Рассмотрим образование дополнительного кода для числа 10. Для положительного числа , а для отрицательного числа дополнительный ко д получается следующим образом:
Для замены вычитания сложением применяется и обратный, и дополнительный коды, при этом в каждом из них действуют свои правила.
Двоичная арифметика в дополнительном коде
При решении во избежание типовых ошибок рекомендуется придерживаться следующей последовательности действий. Допустим, заданы два десятичных числа, тогда необходимо:
- перевести десятичные числа в двоичный код;
- уравнять форматы полученных двоичных чисел;
- если знаки чисел одинаковые, добавить по одному резервному нулю слева от каждого числа во избежание переполнения;
- получить дополнительные коды чисел;
- приписать знаковые разряды;
- сложить полученные коды по правилам двоичного сложения;
- перенос из знакового разряда (если он есть) отбросить;
- результат получен в дополнительном коде, поэтому для проверки значащих разрядов отрицательного числа необходимо сделать вычисления, противоположные формуле (11.3): сначала вычислить обратный код по формуле , после чего произвести инверсию полученного числа.
Для наглядности возьмем два десятичных числа, например, и , и сделаем все возможные варианты вычислений:
- .
Число положительное, поэтому ОК=ПК, для проверки числа нужно перевести его значащие разряды в десятичный код по (П3-2): .
- . Сначала получим дополнительный код отрицательного числа :
Здесь важно уяснить, что крайние левые нули в значащих разрядах сокращать нельзя, поскольку они являются значимыми. Иными словами, все вычисления для каждого примера производятся в неизменном формате, в данном случае в примере (б) — это шесть значащих разрядов, т.е. столько, сколько содержится в большем числе.
Вновь получили знак числа и его значащие разряды, занимающие жестко заданные позиции в выбранном формате числа. Поскольку получено отрицательное число, то ДК ПК, для проверки его значащих разрядов нужно сначала вычислить обратный код, затем перевести его в прямой код инверсией —
а затем уже перевести его в десятичный код по (П3-2): .
- — Сначала получим ДК отрицательного числа .
После этого произведем вычисления:
Получено положительное число, поэтому , для проверки результата нужно только перевести значащие разряды в десятичный код: .
- — Сначала получим дополнительный код отрицательных чисел. Для числа он получается следующим образом:
А для числа —
Сложим полученные числа в том же формате:
Поскольку число отрицательное, . Для проверки значащих разрядов числа нужно сначала вычислить обратный код, после чего перевести его в прямой код инверсией —
И только после этого полученное число проверяется переводом в десятичный код по (11.2): .
Источник