Компьютерные уроки для начинающих
  • Главная
  • Аудио
  • Двоичная арифметика. Тема урока: "Двоичная арифметика" 4 двоичная арифметика сложение и вычитание

Двоичная арифметика. Тема урока: "Двоичная арифметика" 4 двоичная арифметика сложение и вычитание

Перед тем, как рассмотреть формальные правила двоичной арифметики подчеркнем общий принцип сложения и вычитания чисел представленных в любой позиционной системы счисления.

В общем случае процедуры сложения и вычитания двух чисел

A B = C в любой позиционной системы счисления начинаются с младших разрядов.

Код суммы каждго i -того разряда с i получается в результате сложения

a i + b i +1, где единица соответствует переносу из младшего (i - 1)-разряда в i -тый, если в младшем разряде код суммы получился больше или равным основанию системы счисления.

Код разности каждого i -того разряда получается в результате вычитания

a i - b i -1, где единица соответствует заему, если он был, в младшие разряды величины, равной основанию системы счисления.

Следовательно, правила и методы сложения и вычитания в любой позиционной системы счисления в принципе остаются такими же, как в десятичной системе.

Теперь рассмотрим правила арифметики с числами, представленными в двоичном коде.

Сложение двух чисел выполняется поразрядно, начиная с младшего разряда. В каждом разряде выполняется сложение двух цифр слагаемых и единицы переноса из соседнего младшего разряда:

1 + 1 = 0 и осуществляется перенос 1 в старший соседний разряд.

Например:

Вычитание также производится поразрядно, начиная с младшего разряда. При вычитании в данном разряде из нуля единицы необходимо занять единицу из соседнего старшего разряда, которая равна двум единицам данного разряда:

0 - 1 =1 после заема единицы из соседнего старшего разряда.

Например:

Суммирование двоичных чисел в компьютерах осуществляется при помощи двоичных сумматоров, а вычитание - двоичных вычитателей. Но как будет показано в дальнейшем, вычитание можно организовать также при помощи процедуры сложения, т.е. при помощи двоичных сумматоров, если вычитаемое представить в "дополнительном" или "обратном" коде и тем самым исключить необходимость в двоичных вычитателях.

Умножение двоичных чисел производится путем образования про-межуточных произведений и последующего их суммирования. Промежуточные поразрядные произведения формируются по следующим правилам:

0 x 0 = 0 101 510 x 310 = 1510

0 x 1 = 0 11

1 x 1 = 1 + 101

Деление чисел в двоичной системе производится по правилам умножения и вычитания.

Например:

110: 11 = 10 610: 310 = 210

Арифметические действия с двоичными числами подробно будут рассмотрены в дальнейшем.

При выполнении любых арифметических действий важное значение имеют такие электронные устройства, как двоичный полусумматор и двоичный сумматор, которые выполняют побитное двоичное сложение по ранее приведенным правилам. Для двоичного вычитания иногда используют и двоичный вычитатель. Приведем условное обозначение двоичных полусумматора и сумматора:

ai HS S ci ai SM S ci

bi P Pi Pi-1 P Pi

Рис.2.1 Условное обозначение полусумматора (а)

и двоичного сумматора (б).

Здесь a i и b i это i -тые разряды чисел А и В, которые складываются, а c i - i -тый разряд суммы этих чисел, Pi - перенос из данного разряда в соседний следующий старший, Pi-1 - перенос из соседнего младшего в данный разряд.

Если для представления двоичных чисел А, В, С и их знаков выделена

n -разрядная сетка, то очевидно, что для организации процедуры сложения необходимо n двоичных сумматоров, которые соединяются между собой по определенной схеме, зависящей от того в каком коде представляются эти двоичные числа: прямой, обратный или дополнительный.

Очевидно, что в арифметических устройствах цифровых автоматов помимо двоичных сумматоров используются также регистры, счетчики, различные триггера и электронные устройства, выполняющие различные логические процедуры. Обычно используемые регистры должны позволять не только параллельно записывать в них двоичные коды чисел, но и сдвигать изображения этих чисел влево и вправо на необходимое число двоичных разрядов.

Простейшую блок-схему узла, выполняющего процедуру сложения

A+B=C можно представить следующим образом:

где Рr - некоторые регистры, в которые записываются двоичные числа А, В и С; СM - сумматор, точнее группа сумматоров n SM, где n - длина разрядной сетки, отведенной для представления чисел А, В и С.

Помимо арифметических операций в цифровых автоматах реализуются также логические операции, которые подробно рассматриваются в последующих главах.

Кроме этих операций в цифровых автоматах, компьютерах, выполняется еще одна операция над двоичными числами - это сдвиг числа по разрядной сетке влево или вправо. В случае сдвига влево фактически осуществляется умножение двоичного числа на 2, а при сдвиге вправо - деление на 2, где - количество разрядов, на которое сдвигается двоичное число. Например: 0000112= 310 сдвинем влево на 2 разряда, получим 0011002 = 1210, т.е.

3х4(22) = 1210, а теперь 0010002 = 810 сдвинем на 2 разряда вправо, получим 0000102 = 210, т.е. 8:4(22) = 210.

В компьютерах часто используется циклический сдвиг, при выполнении которого разрядная сетка, отведенная для операнда, представляется замкнутой в кольцо. Тогда при сдвиге влево содержимое старшего разряда попадает в младший разряд операнда, а при сдвиге вправо - наоборот.

Предыдущих главах я рассказал о том, что такое цифровая техника и как устроена вычислительная система на основе микроконтроллера. Я упразднил большое число деталей и надеюсь, что это помогло тебе ухватить главные идеи позади цифровой техники и сейчас ты можешь хоть и поверхностно, но осознанно представить принципы работы цифровых устройств и микроконтроллера в частности.

Всё это время я говорил о том, что цифровые машины стали возможны благодаря простой идее о том, что любую информацию можно представить в виде последовательности из «0» и «1», т. е. закодировать её двоичным числом. При этом я умышленно умолчал о том, как «0» и «1» представляются внутри цифрового устройства. Для понимания основных идей информации было достаточно.

Но если задаться вопросом что такое на самом деле «0» и «1» в цифровом устройстве, то очевидный ответ будет звучать так:«электричество»! Да, «истина» и «ложь» в электронных устройствах кодируются с помощью напряжения (если ты забыл что это такое, то можешь просто воспринимать его как давление воды в трубе. Аналогия хоть и не точная, но зато понятная). На самом деле мы можем что угодно принять за «истину» или «ложь». Просто выбрать два разных значения и одно из них считать за «истину», а второе за «ложь».

Например, возьмём монету, «орла» будем считать за «1», а решку - за «0». Такая простая идея позволяет строить вычислительные машины из чего угодно. Можно даже построить механический компьютер. Правда он будет жутко медленный, очень дорогой и невероятно огромный, т. е. абсолютно бесполезное устройство.

Но вернёмся к электрическому представлению «0» и «1». Инженеры решили этот вопрос в лоб и просто приняли 0 вольт за «0», а за «1» напряжение большее ~2.5 вольт. Были придуманы простейшие схемы (логические элементы), сначала на электронных лампах и реле, а потом на транзисторах, которые умеют распознавать эти уровни напряжения и выполнять логические функции: И, НЕ, ИЛИ, И-НЕ и т. д. На основе этих схем были построены более сложные элементы: триггеры, счетчики, сумматоры, шифраторы и дешифраторы, мультиплексоры и демультиплексоры, регистры, - из которых в дальнейшем были созданы ещё более сложные устройства такие как АЛУ, ячейки памяти и многие другие необходимые блоки современных цифровых устройств.

Соглашение, когда 0В обозначает «0», а ~2.5В обозначает «1» принято называть положительной логикой. Если же принято наоборот (0В = «1», а 2.5В = «0»), то такое соглашение называют отрицательной логикой. Какой вариант использовать -- выбор разработчика. К тому же сейчас существует множество схем, которые работают и с другими напряжениями. В целом они делятся на два больших семейства: ТТЛ (TTL) и КМОП (CMOS). Существуют также более современные семейства LVTTL, LVCMOS. Не буду сейчас на них подробно останавливаться.

Системы счисления

Система счисления - это практически тоже самое, что алфавит для записи слов, только он служит для записи чисел. Двоичный алфавит состоит из цифр «0» и «1», а десятичный из 0, 1, 2, 3, 4, 5, 6, 7, 8 ,9. Восьмиричный из 0, 1, 2, 3, 4, 5, 6, 7. С помощью такого «численного алфавита» мы записываем все возможные числа. При этом все современные активно использующиеся системы счисления таковы, что для записи любого числа достаточно только тех цифр, что есть в выбранной системе счисления. При этом количество разных цифр в системе счисления называется её «основанием». Двоичная система имеет основание 2, десятичная -- 10, восьмиричная -- 8, шестандцатиричная -- 16, шестидесятиричная -- 60 и т.д.

Системы счисления делятся на позиционные и непозиционные. В непозиционных число выражается с помощью набора символов, порядок которых не играет никакой роли. К одной из самых известных непозиционных систем относится римская система записи чисел: XXVIII. Согласись, что записывать римскими цифрами большие числа очень трудно. А производить вычисления ещё не удобней.

В позиционных же наоборот порядок следования цифр играет важную роль, так как он определяет значение числа. Положение каждой цифры называется позицией, каждая позиция имеет свой вес. Число в любой системе счисления можно записать с помощью простой формулы:

D = d p-1 b p-1 + d p-2 b p-2 + ... + d 1 b 1 + d 0 b 0 .d -1 b -1 + d -2 b -2 + ... + d -n b -n

С помощью этой формулы можно записать как целое число, так и число дробное. p -- число знаков слева от точки, а n -- после запятой, а b -- это основание системы. Для примера запишем число 22.15:

22.15 = d 2-1 b 2-1 + d 2-2 b 2-2 .d -1 b -1 +d -2 b -2 = 2 1 10 1 + 2 0 10 0 .1 -1 10 -1 +5 -2 10 -2

Одной из древнейших из дошедших до нас позиционых систем счисления является шестидесятиричная. И осталась она нам от Вавилона. Отголоски применения такой системы до сих пор можно встретить при определении времени и углов. В этой системе каждый следующий разряд был на 60 больше предыдущего.

Позиционные системы таковы, что если в результате сложения, полученное число превышает «основание», то мы добавляем новый разряд слева: 5+7 = 12, 11+99 = 110 и т.д. Эти правила сложения тебе известны со времен начальной школы. И они успешно применяются как десятичным, так и к двоичным числам.

Глубже в вопросы систем счисления можно вникнуть по материалам, к примеру, википедии или книг на эту тему. Наша же цель -- это собрать воедино картину мира электроники. Теперь, когда магия систем счисления и представления двоичных чисел в цифровых устройствах развеялась я могу наконец-то перейти к двоичной арифметике и рассказать о ней чуть больше. В частности мы затронем способы представления двоичных чисел в цифровых устройствах, а также затронем типичные арифметические операции, которые применяются для операций с двоичными числами.

Арифметика нулей и единиц

Выполнять арифметические операции достаточно легко, так как у нас всего две цифры и несколько правил:

1 + 0 = 01 0 + 0 = 00 1 + 1 = 10 (+ 1 разряд переноса) = 10 1 * 1 = 01 1 - 1 = 00

При выполнении операций следует всегда учитывать разрядность числа. Если мы складываем двоичные числа на бумаге, то она не играет никакой роли, а вот в реальных устройствах важна. Так как размер, т. е. разрядность чисел, с которыми может работать устройство задаётся на этапе проектирования. Покажу на примере - сложим два числа:

Как видно сумма двух 8-разрядных чисел не всегда равна 8 разрядам. В этом примере мы получили 9! Ниже я показал, что произойдёт, если сложить два 8-разрядных числа в устройстве, которое умеет работать только с 8-разрядными числами, если забыть про перенос в старший разряд.

Мы потеряли самый старший разряд (9-й), который в результате сложения должен был быть равен «1»! Таким образом, реальное цифровое устройство всегда должно уметь учитывать перенос из младшего разряда в старший, иначе некоторые операции сложения всегда будут давать неверный результат.

Кстати, если представить, что число "11111111" -- это максимальное значение некоторого восьми разрядного счетчитка, то добавив к нему единицу мы получим переполнение счетчика и он обнулится.

В простейшем случае, для одноразрядных чисел, правила двоичного сложения имеют вид:

При сложении () возникает два случая:

Многоразрядные числа складываются по тем же правилам, но при этом учитывается входной перенос в каждом разряде: выходной перенос младшего разряда является входным переносом для соседнего старшего разряда. Рассмотрим несколько примеров сложения многоразрядных чисел.

Двоичное вычитание

Здесь рассматриваются правила, работающие в случае вычитания меньшего числа из большего. Все остальные случаи рассматриваются ниже в разделе 3.2, посвященном двоичной арифметике со знаками. В простейшем случае, для каждого разряда, правила двоичного вычитания имеют вид:

Когда производится вычитание () осуществляется займ из более старшего разряда. Знак вопроса означает, что разряд уменьшаемого изменяется в результате займа по правилу:

При вычитании (0 - 1) в разряде разности получается 1, разряды уменьшаемого, начиная со следующего, изменяются на противоположные (инвертируются) до первой встречной единицы (включительно). После этого производится вычитание из измененных разрядов уменьшаемого .

Рассмотрим несколько примеров вычитания многоразрядных чисел (из большего числа вычитается меньшее).

Очевидно, что как в десятичном, так и в двоичном коде, складывать значительно проще, чем вычитать. Поэтому большое распространение получила двоичная арифметика с учетом знаков чисел, где вычитание заменяется сложением чисел с учетом их знака. При этом уже не имеет значения соотношение чисел между собой, какое из них больше - вычитаемое или уменьшаемое. Знак разности получается автоматически.

Двоичная арифметика с учетом знаков чисел

Прямой, обратный и дополнительный коды

В двоичном коде знак числа представляет собой разряд, приписываемый слева от значащих разрядов числа. Знак " " обозначается логическим , знак " " - логической . Для наглядности все примеры будем рассматривать для целых чисел, отделяя знаковый разряд точкой.

Прямой код (ПК) и для отрицательных, и для положительных чисел образуется одинаково, простым дописыванием знакового разряда .

Так, в восьмиразрядном формате


Обратный код (ОК) для положительных чисел совпадает с прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел значащие разряды инвертируются (нули заменяются на единицы, единицы - на нули), после чего приписывается знак .

Для того же числа обратный код имеет вид: , .

Недостатком обратного кода является то, что одно и то же число и записывается по-разному: , , что может вызвать нежелательное разночтение работы логической схемы. Поэтому предпочтительным является дополнительный код.

Дополнительный код (ДК) для положительных чисел совпадает с обратным и прямым, т.е. к значащим разрядам приписывается знаковый разряд. Для отрицательных чисел дополнительный код на 1 больше, чем обратный. После образования значащих разрядов приписывается знаковый разряд .

Для значащих разрядов отрицательного числа справедлива формула:

(11.3)

Напишем число в 7-разрядном дополнительном коде:

Таким образом в дополнительном коде , следовательно, указанный недостаток обратного кода преодолен.

Рассмотрим образование дополнительного кода для числа 10. Для положительного числа , а для отрицательного числа дополнительный ко д получается следующим образом:

Для замены вычитания сложением применяется и обратный , и дополнительный коды, при этом в каждом из них действуют свои правила.

Двоичная арифметика в дополнительном коде

Для наглядности возьмем два десятичных числа, например, и , и сделаем все возможные варианты вычислений:

    .

    Число положительное, поэтому ОК=ПК , для проверки числа нужно перевести его значащие разряды в десятичный код по (П3-2): .

  • . Сначала получим дополнительный код отрицательного числа :

    Здесь важно уяснить, что крайние левые нули в значащих разрядах сокращать нельзя, поскольку они являются значимыми. Иными словами, все вычисления для каждого примера производятся в неизменном формате, в данном случае в примере (б) - это шесть значащих разрядов, т.е. столько, сколько содержится в большем числе.

    Вновь получили знак числа и его значащие разряды, занимающие жестко заданные позиции в выбранном формате числа. Поскольку получено отрицательное число, то ДК ПК , для проверки его значащих разрядов нужно сначала вычислить обратный код , затем перевести его в прямой код инверсией -

    а затем уже перевести его в десятичный код по (П3-2): .

  • - Сначала получим ДК отрицательного числа .

    После этого произведем вычисления.

Назначение сервиса . Онлайн-калькулятор предназначен для сложения двоичных чисел в прямом, обратном и дополнительном кодах.

Вместе с этим калькулятором также используют следующие:
Перевод чисел в двоичную, шестнадцатеричную, десятичную, восьмеричную системы счисления
Умножение двоичных чисел
Формат представления чисел с плавающей запятой
Пример №1 . Представить число 133,54 в форме числа с плавающей точкой.
Решение . Представим число 133.54 в нормализованном экспоненциальном виде:
1.3354*10 2 = 1.3354*exp 10 2
Число 1.3354*exp 10 2 состоит из двух частей: мантиссы M=1.3354 и экспоненты exp 10 =2
Если мантисса находится в диапазоне 1 ≤ M Представление числа в денормализованном экспоненциальном виде .
Если мантисса находится в диапазоне 0,1 ≤ M Представим число в денормализованном экспоненциальном виде: 0.13354*exp 10 3

Пример №2 . Представить двоичное число 101.10 2 в нормализованном виде, записать в 32-битом стандарте IEEE754.
Таблица истинности


Вычисление пределов

Арифметика в двоичной системе счисления

Арифметические действия в двоичной системе выполняются так же, как и в десятичной. Но, если в десятичной системе счисления перенос и заём осуществляется по десять единиц, то в двоичной - по две единицы. В таблице представлены правила сложения и вычитания в двоичной системе счисления.
  1. При сложении в двоичной системе системе счисления двух единиц в данном разряде будет 0 и появится перенос единицы в старший разряд.
  2. При вычитании из нуля единицы производится заём единицы из старшего разряда, где есть 1 . Единица, занятая в этом разряде, даёт две единицы в разряде, где вычисляется действие, а также по единице, во всех промежуточных разрядах.

Сложение чисел с учетом их знаков на машине представляет собой последовательность следующих действий:

  • преобразование исходных чисел в указанный код;
  • поразрядное сложение кодов;
  • анализ полученного результата.
При выполнении операции в обратном (модифицированном обратном) коде если в результате сложения в знаковом разряде возникает единица переноса, она прибавляется к младшему разряду суммы.
При выполнении операции в дополнительном (модифицированном дополнительном) коде если в результате сложения в знаковом разряде возникает единица переноса, она отбрасывается.
Операция вычитания в ЭВМ выполняется через сложение по правилу: Х-У=Х+(-У). Дальнейшие действия выполняются также как и для операции сложения.

Пример №1 .
Дано: х=0,110001; y= -0,001001, сложить в обратном модифицированном коде.

Дано: х=0,101001; y= -0,001101, сложить в дополнительном модифицированном коде.

Пример №2 . Решить примеры на вычитание двоичных чисел, используя метод дополнения до 1 и циклического переноса.
а) 11 - 10.
Решение .
Представим числа 11 2 и -10 2 в обратном коде.

Двоичное число 0000011 имеет обратный код 0,0000011

Сложим числа 00000011 и 11111101

7 6 5 4 3 2 1 0
1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0

7 6 5 4 3 2 1 0
1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0

В 2-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 3-й разряд.
7 6 5 4 3 2 1 0
1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0

7 6 5 4 3 2 1 0
1 1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0 0

7 6 5 4 3 2 1 0
1 1 1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0

7 6 5 4 3 2 1 0
1 1 1 1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0 0

7 6 5 4 3 2 1 0
1 1 1 1 1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0 0 0

7 6 5 4 3 2 1 0
1 1 1 1 1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0 0 0 0

В итоге получаем:
7 6 5 4 3 2 1 0
1 1 1 1 1 1 1
0 0 0 0 0 0 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0 0 0 0

Возник перенос из знакового разряда. Добавим его (т.е. 1) к полученному числу (тем самым осуществляя процедуру циклического переноса).
В итоге получаем:
7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1

Результат сложения: 00000001. Переведем в десятичное представление . Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
00000001 = 2 7 *0 + 2 6 *0 + 2 5 *0 + 2 4 *0 + 2 3 *0 + 2 2 *0 + 2 1 *0 + 2 0 *1 = 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 = 1
Результат сложения (в десятичном представлении): 1

б) 111-010 Представим числа 111 2 и -010 2 в обратном коде.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Двоичное число 0000111 имеет обратный код 0,0000111
Двоичное число 0000010 имеет обратный код 1,1111101
Сложим числа 00000111 и 11111101
В 0-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 1-й разряд.

7 6 5 4 3 2 1 0
1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0

В 1-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 2-й разряд.
7 6 5 4 3 2 1 0
1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 0

В 2-ом разряде возникло переполнение (1 + 1 + 1 = 11). Поэтому записываем 1, а 1 переносим на 3-й разряд.
7 6 5 4 3 2 1 0
1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
1 0 0

В 3-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 4-й разряд.
7 6 5 4 3 2 1 0
1 1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 1 0 0

В 4-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 5-й разряд.
7 6 5 4 3 2 1 0
1 1 1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 0 1 0 0

В 5-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 6-й разряд.
7 6 5 4 3 2 1 0
1 1 1 1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 0 0 1 0 0

В 6-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 7-й разряд.
7 6 5 4 3 2 1 0
1 1 1 1 1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 0 0 0 1 0 0

В 7-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 8-й разряд.
7 6 5 4 3 2 1 0
1 1 1 1 1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0 1 0 0

В итоге получаем:
7 6 5 4 3 2 1 0
1 1 1 1 1 1 1
0 0 0 0 0 1 1 1
1 1 1 1 1 1 0 1
0 0 0 0 0 1 0 0

Возник перенос из знакового разряда. Добавим его (т.е. 1) к полученному числу (тем самым осуществляя процедуру циклического переноса).
В итоге получаем:
7 6 5 4 3 2 1 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1

Результат сложения: 00000101
Получили число 00000101. Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
00000101 = 2 7 *0 + 2 6 *0 + 2 5 *0 + 2 4 *0 + 2 3 *0 + 2 2 *1 + 2 1 *0 + 2 0 *1 = 0 + 0 + 0 + 0 + 0 + 4 + 0 + 1 = 5
Результат сложения (в десятичном представлении): 5

Сложение двоичных вещественных чисел с плавающей запятой

В компьютере любое число может быть представлено в формате с плавающей точкой. Формат с плавающей точкой показан на рисунке:


Например, число 10101 в формате с плавающей точкой можно записать так:


В компьютерах используется нормализованная форма записи числа, в которой положение запятой всегда задается перед значащей цифрой мантиссы, т.е. выполняется условие:
b -1 ≤|M|Нормализованное число - это число, у которого после запятой идет значащая цифра (т.е. 1 в двоичной системе счисления). Пример нормализации:
0,00101*2 100 =0,101*2 10
111,1001*2 10 =0,111001*2 101
0,01101*2 -11 =0,1101*2 -100
11,1011*2 -101 =0,11011*2 -11

При сложении чисел с плавающей точкой выравнивание порядков выполняют в сторону большего порядка:

Алгоритм сложения чисел с плавающей точкой:

  1. Выравнивание порядков;
  2. Сложение мантисс в дополнительном модифицированном коде;
  3. Нормализация результата.

Пример №4 .
A=0,1011*2 10 , B=0,0001*2 11
1. Выравнивание порядков;
A=0,01011*2 11 , B=0,0001*2 11
2. Сложение мантисс в дополнительном модифицированном коде;
MA доп.мод. =00,01011
MB доп.мод. =00,0001
00,01011
+ 00,00010
=
00,01101
A+B=0,01101*2 11
3. Нормализация результата.
A+B=0,1101*2 10

Пример №3 . Записать десятичное число в двоично-десятичной системе счисления и сложить два числа в двоичной системе счисления.

Лучшие статьи по теме