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

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

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

Таблица сложения, вычитания и умножения для двоичной системы счисления

Сложение двоичных чисел

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

Пример : 1011,1 2 + 1010,11 2

Интересна также ситуация, когда складываются больше двух чисел. В этом случае возможен перенос через несколько разрядов.
Пример : 111,1 2 + 111 2 + 101,1 2

При сложении в разряде единиц (разряд 0) оказывается 4 единицы, которые, объединившись, дают 100 2 . Поэтому из нулевого разряда в первый разряд переносится 0 , а во второй — 1 .
Аналогичная ситуация возникает во втором разряде, где с учетом двух перенесенных единиц получается число 5 = 101 2 . 1 остается во втором разряде, 0 переносится в третий и 1 переносится в четвёртый.

Вычитание двоичных чисел

В случаях, когда занимается единица старшего разряда, она дает две единицы младшего разряда. Если занимается единица через несколько разрядов, то она дает по одной единице во всех промежуточных нулевых разрядах и две единицы в том разряде, для которого занималась.
Пример : 10110,01 2 — 1001,1 2

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

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

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.

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

роизвольное натуральное число можно единственным способом представить в виде суммы степеней двойки, например 23 = 16+4+2+1. Обозначая входящие в эту сумму степени двойки единицами, а не входящие в ее степени нулями, можно кратко обозначить эту сумму булевым набором (в другой терминологии - вектором) (10111) 2 . Индекс 2 напоминает о том, что число записано в двоичной системе. Единица, стоящая в младшем (самом левом) разряде, означает слагаемое 1, единица во втором слева разряде означает слагаемое 2, единица в третьем разряде означает 4, а нуль в четвертом разряде означает отсутствие слагаемого 8, единица в четвертом (старшем) разряде означает присутствие слагаемого 16 (в большинстве случаев разумно рассматривать только такие записи чисел в двоичной системе, в которых в старшем разряде стоит единица).

Главное достоинство двоичной системы (помимо естественности ее применения в электронной цифровой технике) - исключительная простота алгоритмов арифметических операций в ней. Таблица умножения в двоичной системе совсем не требует запоминания: любое число, умноженное на нуль дает нуль, а умноженное на единицу равно самому себе. Правило деления сводится к двум равенствам 0/1 = 0, 1/1 =1, благодаря чему деление столбиком в двоичной системе делается проще, чем в десятичной, и по существу сводится к многократному вычитанию. Таблица сложения в двоичной системе чуть сложнее таблицы умножения (в отличие от десятичной системы), так как 1+1 = (10) 2 и возникает перенос в следующий разряд.

Правило сложения двух битов в двоичной системе задается формулами x+y = 2v+u, v = x&y, u = xÅy. В силу симметрии для их проверки достаточно рассмотреть не четыре, а три случая: 0+0 = (00) 2 , 1+0=0+1= (01) 2 , 1+1 = (10) 2 . Схема, выполняющая это сложение, называется полусумматором (в англоязычной литературе: half adder) и обозначается обычно HA или FA2. Эта схема (в базисе {AND, XOR}) изображена на рисунке.

Схемы для арифметических операций над многоразрядными двоичными числами. Сложение двух n-разрядных двоичных чисел (x n ,….,x 1) 2 и (y n ,….,y 1) 2 как и в десятичной системе приводит к появлению переносов в следующий разряд, которые необходимо учитывать в вычислении. Эти переносы также равны нулю или единице (если перенос равен нулю, то в ручном вычислении он фактически не выполняется, но логическая схема обязана правильно работать и в этом случае, ведь она «не знает», какой перенос пришел из предыдущего разряда). Обозначим перенос из (i-1)-го разряда в следующий i-й разряд через w i (w 1 =0, потому что предыдущего разряда в этом случае просто нет). Тогда для вычисления z i (i-го бита результата) нужно сложить биты x i и y i и бит переноса w i . Это сложение выполняем по формулам

x i + y i +w i = 2v i +u i , v i =m(x i ,y i ,w i), u i =l(x i ,y i ,w i)

с помощью схемы FA3. Тогда z i =u i =l(x i ,y i ,w i), а следующий бит переноса w i +1 = v i =m(x i ,y i ,w i). При сложении n-разрядных чисел получается вообще говоря n+1-разрядное число. Его старший бит z n +1 = w n +1 равен последнему переносу.

Схема сложения трехразрядных чисел приведена на следующем рисунке. Аналогичным образом выглядит и схема сложения n-разрядных чисел.

Сложность указанного n-разрядного сумматора равна 5n-3. Н.П.Редькин доказал, что сумматоров для n-разрядных чисел меньшей сложности в базисе {AND,OR,XOR,NOT} не существует. Построенный сумматор является поэтому минимальной схемой. Но у этой схемы есть существенный недостаток - она имеет большую глубину. Глубиной схемы называется максимальное число ее элементов, образующих цепь, соединяющую какой-либо из входов схемы с одним из ее выходов. Например, глубина указанной выше схемы FA3 равна 3.

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

Теоретически вычислить задержку реальной схемы очень сложно. Цепей элементов схемы, соединяющих ее входы с выходами (эти цепи также называют путями), обычно довольно много и задержка схемы определяется задержкой по самому плохому в определенном смысле пути, который называется критическим. Например, на схеме FA3 критический путь, вероятно, соединяет входы X или Y с выходом m. Задержка по любому пути определяется не только суммой задержек всех элементов, лежащих на этом пути (в приведенном примере она равна 3, если считать задержку каждого элемента единичной). Следует учитывать также задержку соединяющих эти элементы проводов. Задержка элемента зависит от того, между каким его входом и каким его выходом она измеряется, а также от электрических характеристик самого элемента и элементов непосредственно с ним связанных в рассматриваемой схеме, она зависит от температуры схемы и даже от того, какие логические значения подаются в рассматриваемый момент на входы этого элемента и изменяется ли (и в какую сторону) значение на его выходе. Тем не менее, хотя и не очень точно, задержку пути можно оценить как сумму задержек его элементов. Если задержки всех элементов равны, то эта величина определяется глубиной схемы. Разумеется, понятие глубины схемы можно расширить, допустив, что элементы базиса могут иметь произвольные неотрицательные задержки.

Глубина указанной выше схемы n-разрядного сумматора на первый взгляд равна 3n-2. Но внимательный анализ возможных критических путей показывает, что она на самом деле равна 2n-1. Все равно это очень много и построенная таким образом реальная схема будет иметь большую задержку. На практике используются схемы, имеющие одновременно малую сложность, не превосходящую Cn (где С - небольшая константа) и малую глубину, приблизительно равную 2log 2 n. В.М. Храпченко в 1970 г. построил схему малой сложности и глубины, асимптотически равной log 2 n (т.е. равную (1+ e(n)) log 2 n, где e(n) стремится к нулю с ростом n). Он же недавно доказал, что глубина сумматора не может быть меньше log 2 n + log 2 n (log 2 (log 2 n))). Поэтому построенная им схема имеет асимптотически минимальную глубину. Однако схема Храпченко превосходит обычные схемы только при n порядка тысячи. Тем не менее существует некоторая модификация его схемы с глубиной приблизительно равной log j n, где j = (Ö5+1)/2, и эта схема имеет глубину меньшую, чем стандартные схемы, уже начиная с n = 8. В 2008 г. М.И.Гринчук построил схему глубины не большей log 2 n+log 2 (log 2 n)+6, которая уже при малых n имеет меньшую глубину, чем все известные схемы.

Задача построения оптимальных схем для умножения n-разрядных чисел оказалась еще труднее, чем задача о построении оптимальных сумматоров. Легко построить схему для умножения n-разрядных чисел в базисе {OR,AND,XOR,NOT} сложности приблизительно равной 6n 2 . Для этого можно использовать указанную выше схему для сумматора. Однако ее глубина будет велика. В начале 60-х годов несколько исследователей (в СССР Столяров и Офман, в США Авиценис и Уоллес) независимо построили схему для умножения сложности порядка n 2 и глубины порядка log 2 n. В смысле глубины эти схемы по порядку оптимальны, но до сих пор остается нерешенной задача построения схемы для умножения асимптотически минимальной глубины. В смысле сложности эти схемы оказались далеки от оптимальных. А. А. Карацуба построил в 1962 г. схему для умножения, имеющую сложность по порядку не большую n 1,6 , потом А. Л. Тоом построил схему сложности n 1+ e(n) , где e(n) стремится к нулю с ростом n. В определенном смысле этот результат окончательный, тем не менее он был уточнен на рубеже 70-х годов немецкими математиками А. Шенхаге и Ф. Штрассеном, которые получили для схем умножения верхнюю оценку сложности по порядку не превосходящую n log 2 n log 2 (log 2 n), а в 2008 г. эту оценку улучшил американский математик М. Фюрер, заменивший двойной логарифм крайне медленно растущей функцией. Есть предположение, что сложность схемы умножения по порядку не меньше n log 2 n, но и это не доказано.

Американский математик С.Кук доказал, что можно построить схему для деления 2n-разрядного числа на n-разрядное, у которой сложность по порядку не превосходит сложности умножения n-разрядных чисел. Известно также, что нижняя оценка сложности схемы для деления по порядку не меньше нижней оценки сложности умножения. Поэтому в смысле оценок сложности деление не представляет ничего нового в сравнении с умножением. Однако долгое время наилучшей оценкой глубины деления по порядку было (log 2 n) 2 .

Впоследствии были найдены схемы для деления с глубиной по порядку равной log 2 n, но их сложность оказалась велика. Американцы Рейф и Тейт построили схемы для деления глубины по порядку не превосходящей log 2 n log 2 (log 2 n) и одновременно сложности по порядку не превосходящей n log 2 n log 2 log 2 n, однако и эти схемы, как и схемы Шенхаге-Штрассена и Фюрера пока не нашли практических применений, так как в действительности начинают превосходить используемые на практике схемы лишь при огромных значениях n.

Рекомендуемая литература

  1. О.Б. Лупанов « Асимптотические оценки сложности управляющих систем » изд. МГУ, 1984.
  2. О.Б. Лупанов «Конспект лекций по математической логике »изд. МГУ, 2009.
  3. Дж. Сэвидж «Сложность вычислений » М. изд. Факториал, 1998.
  4. Д. Кнут « Искусство программирования на компьютере», т. 2, изд. Вильямс, 2000.
  5. С.Б. Гашков «Системы счисления и их применения », М. изд. МЦНМО, 2004.
  6. С.Б. Гашков, В.Н. Чубариков «Арифметика. Алгоритмы. Сложность вычислений », изд. Дрофа, 2005.

Цель :

    учащиеся познакомятся с двоичной системой счисления, укажут ее недостатки и преимущества использования в вычислительной технике;

    разовьют логическое мышление; сформируют навыки выполнения арифметических действий с двоичными числами;

    воспитают в себе умение самостоятельно добывать новые знания.

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

Способы работы: Индивидуальная, парная, групповая

Критерии оценки:

Ответы на вопросы 1-3 балла

Запись конспекта 1-2 балла

Выполнение заданий - 1-4 балла

Активность работы в группе – 1 балл

Мониторинг оценивания:

1-3 балла – «3»

4-6 баллов – «4»

7-10 баллов – «5»

Этапы урока

Время

Деятельность учителя

Деятельность ученика

Оценивание

Ожидаемый результат

Побуждение

Приветствие

Проверка явки учащихся

Позитивный настрой

Деление на группы: «Фрукты»

Организация работы по определению темы и цели урока

Организация деятельности по созданию критериев оценки работы

Проверка кластеров «Количество информации»

Проверка домашнего задания:

Переведите двоичные числа в восьмеричную систему счисления и шестнадцатеричную.

а) 10111110001

б) 1001101011001

в) 100100101011

Приветствие

Позитивно настраиваются на урок

Делятся на группы

Определяют тему и цели урока

Создают критериии оценки работы

Показывают выполнение домашнего задания

Смайлики

Позитивно настроятся на урок

Осуществлят деление на группы

Определят тему и цели урока

Создадут критериии оценки работы

Выполнят домашнее задание

Осмысление

Организация чтения текста

Читают текст

С пометками - смайлики

Внимательно прочитают текст

Рефлексия

Организует работу с конспектом

Контрольные вопросы:

1.Из чего складывается двоичная система счисления?

2.Какие ученые изучали двоичную систему счисления?

3.По каким правилам осуществляется выполнение арифметических действий над двоичными числами?

4.Расскажите таблицу сложения, вычитания двоичных чисел.

5.Как выполняются операции умножения, деления двоичных чисел.

Решите задачи:

Выполните сложение:

1001001 + 10101 (ответ 1011110);
101101 + 1101101 (
ответ 10011010)
11000,11 + 11010,11 (
ответ 110011,1)

Выполните вычитание:

10001000 – 1110011 (ответ 10101)
1101100 – 10110110

(ответ – 1001010)
110101,101 – 1001,111 (101011,11)

Выполните умножение:

100001*111,11

(ответ : 11111111,11)
10011*1111,01

(ответ : 100100001,11)

Выполните деление:

1000000 / 1110 (ответ :100)
11101001000/111100

(ответ : 11111)

Запись конспекта

Отвечают на вопросы, выполняют задания

Смайлики

Запишут конспект

Ответят на вопросы, выполнят задания

Будут внимательно слушать друг друга, критически оценят друг друга

Обратная связь

Организует обратную связь:

1.Что понравилось на уроке?

2. Что не понравилось на уроке?

3. Какие возникли вопросы по уроку?

Заполнят листы обратной связи

Учащиеся смогут выразить свои мысли на бумаге

Домашнее задание

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

Выполните действия:

1) 110010 + 111,01;

2) 11110000111 – 110110001;

3) 10101,101 * 111;

4) 10101110/101.

Запишут в дневник домашнее задание

Получат домашнее задание

Оценивание

Согласно критериям выставляет учащимся суммативную оценку

Подадут дневники на оценку

В дневник выставятся объективные оценки

Двоичная система счисления

Из всех позиционных систем счисления особенно проста и поэтому интересна двоичная система счисления.

– Чему равно основание двоичной системы счисления? (q = 2)

– Какой вид имеет развёрнутая форма записи двоичного числа? (А 2 =а n-1 *2 n-1 + …a 0*2 0 + a -1 *2 -1 +…a -m *2 -m , где а i равно 1 или 0.)

Двоичная система счисления издавна была предметом пристального внимания многих учёных. П.С.Лаплас писал о своём отношении к двоичной (бинарной) системе счисления великого математика Г.Ф.Лейбница: «В своей бинарной арифметике Лейбниц видел прообраз творения. Ему представлялось, что единица представляет божественное начало, а нуль – небытие и что высшее существо создает всё из небытия точно таким же образом, как единица и нуль в его системе выражают все числа ». Эти слова подчеркивают удивительную универсальность алфавита состоящего всего из двух символов.

Двоичная арифметика.

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

Все позиционные системы «одинаковы», а именно, во всех них арифметические операции выполняются по одним и тем же правилам:

    справедливы одни и те же законы арифметики: коммуникативный, ассоциативный, дистрибутивный;

    справедливы правила сложения, вычитания, умножения и деления столбиком;

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

Сложение.

Таблица сложения двоичных чисел проста.

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
1 + 1 + 1 = 11

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

Пример.

Вычитание.

0 – 0 = 0
0 – 1 = 1
1 – 0 = 1
1 – 1 = 0

Вычитание многоразрядных двоичных чисел происходит в соответствии с вышеприведённой таблицей вычитания с учетом возможных заёмов из старших разрядов.

Пример.

Умножение.

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

Пример.

Деление.

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

Пример.

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

Таблица 1.31. Арифметические операции над двоичными числами

Пр и мер 1.60. Произвести сложение чисел 55,25 и 19,5 в десятичной и в двоичной системах счисления.

Первое слагаемое 55 , 25 1 1 0 1 1 1,0 1

Второе слагаемое 19 , 50 1 0 0 1 1,1 0

Образующийся дополнительный бит называется битом переноса.

Пр и мер 1.61. Произвести сложение чисел 65 и 42 в двоичной системе счисления.

  • 65 10 = 01000001 2 .
  • 42 10 = 00101010 2 .

Выполним сложение этих чисел:

01000001 Первое слагаемое

00101010 Второе слагаемое 01101011 Результат

Можно убедиться, что (01101011) 2 = (107) 10:

0 2 7 + 1 2 6 + 1 2 5 + 0 2 4 + 1 -2 3 + 0-2 2 + 1 -2" + 1 -2° = = 64 + 32 + 8 + 2+ 1 = 107.

Пр и мер 1.62. Выполнить сложение двоичных чисел X и У. а) Х= 1101; У= 101.

Х+ У =

Результат. 1101 + 101 = 10010. б)Х= 1101; У= 101; 7= 111.

х+у+г= 110 0 1

Примечание. Вычитание чисел в двоичной системе счисления выполняется так же, как и в десятичной. При необходимости занимается единица из следующего старшего разряда, причем занимаемая единица равна двум единицам данного разряда. Заем единицы производится каждый раз, когда цифра в разряде вычитаемого количественно больше цифры в том же разряде уменьшаемого. Для выполнения операции вычитания она заменяется сложением, а в качестве второго слагаемого берется инвертированное (противоположное) число. Например, пусть нужно выполнить вычитание: 65 - 42. Заменим его сложением: 65 + (-42).