Как делить в двоичной системе

от admin

4.3. Деление двоичных чисел

4.3.1. Деление двоичных чисел, представленных в форме с фиксированной запятой.

Деление двоичных чисел во многом аналогично делению десятичных чисел.

В универсальных вычислительных машинах, как правило, реализуется «школьный» алгоритм деления чисел. «Школьный» алгоритм деления заключается в том, что делитель на каждом шаге вычитается из делимого столько раз (начиная со старших разрядов), сколько это возможно для получения наименьшего положительного остатка. Тогда в очередной разряд частного записывается цифра, равная числу делителей, содержащихся в делимом на данном шаге. Иначе говоря, при делении операцию вычитания повторяют до тех пор, пока уменьшаемое не станет меньше вычитаемого. Число этих повторений показывает, сколько раз вычитаемое укладывается в уменьшаемом.

разделим число 35 на 7 :

1) 35 — 7 = 28, 2) 28 — 7 = 21, 3) 21 — 7 = 14, 4) 14 — 7 = 7, 5) 7 — 7 = 0.

Ответ равен 5, т.к. процедура вычитания была повторена 5 раз.

Рассмотрим еще один пример:

разделим 204(10) на 12(10), т.е. 11001100(2):1100(2):

делимое 11001100 | 1100 — делитель

делитель 1100 | 10001

Двоичное, как и десятичное деление, начинается с анализа делимого (11001100) и делителя (1100). Сразу же обнаруживается, что делитель укладывается в 1100, а поэтому записывается 1 в старший разряд поля частного. Умножается делитель на 1 и вычитается из 1100, разность равна 0. Объединяется 0 остатка со значением следующего разряда делимого, равным 1. Поскольку делитель (1100) 0 раз укладывается в 1, записываем 0 в следующий по старшинству разряд поля частного, а число 1 объединяется со следующим разрядом делимого и т.д. до тех пор, пока делимое не оказывается исчерпанным.

Конечно компьютер не может строить догадок относительно того, сколько раз делитель укладывается в том или ином числе, поэтому весь процесс деления сводится к операциям вычитания и сдвига. Продемонстрируем на том же примере, но сначала делитель (1100) представим в дополнительном коде, что позволит ограничиться сложением во всех случаях, когда нужно выполнять сложение или вычитание: 1100пр = 1. 0100д. Частное формируется в некотором регистре С, незаполненные разряды которого будем обозначать через Х.

Начинаем вычитать делитель из делимого. Если остаток получается положительным, то в разряд частного записывается 1, в противном случае — 0.

0. 11001100 делимое 204

+ 1. 01000000 делитель 12

0. 00001100 первый остаток

Первый (старший) бит частного равен 1, т.к. остаток получился положительным: С = 1ХХХХ. Далее сдвигается первый остаток на один разряд влево и из него вычитывается делитель:

1. 01011000 второй остаток

Остаток отрицательный, поэтому в следующий разряд частного записывается 0, С = 10ХХХ. Кроме того необходимо биты делителя вернуть обратно первому остатку, т.е. сложить делитель (в прямом коде) и второй остаток:

0. 00011000 сдвинутый первый остаток.

Далее еще раз сдвигается сдвинутый первый остаток на один разряд влево и вычитается из него делитель:

1. 01110000 третий остаток

Третий остаток отрицательный, значит следующий (третий) разряд частного равен 0, С = 100ХХ. Поэтому возвращаем делитель третьему остатку,

0. 00110000 дважды сдвинутый первый остаток

Сдвигаем дважды сдвинутый первый остаток на один разряд влево и вычитаем делитель:

1. 10100000 четвертый остаток

Четвертый остаток опять отрицательный, поэтому С = 1000Х. Прибавляем делитель к четвертому остатку, результат сдвигаем на один разряд влево, а затем вновь вычитаем делитель:

0. 1100000 первый остаток после четвертого сдвига

0. 0000000 пятый остаток

Остаток положительный, значит С = 10001 = 17(10) — это и есть ответ.

Такой метод деления называется делением с восстановлением остатка.

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

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

Например: разделим 35 на 5. 3510 = 0.1000112, 510 = 1012, 5д = 1.011д

(в регистре С, как и в предыдущем примере, формируется частное):

1.111011 С = 0 восстанавливаем остаток до делимого.

0.100011 сдвигаем влево остаток.

0.01111 С = 01, сдвигаем влево остаток.

0.0101 С = 011, сдвигаем остаток.

0.000 С = 0111 = 710

Вычитание делимого продолжают столько раз, сколько разрядов отведено для частного.

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

где a0 — это остаток. Если а0 0, то С = 1, если а0 < 0, то С = 0. Для определения следующей цифры частного необходимо выполнить следующие действия: при а0 0 надо 2а0 — Y = a1, а при а0 < 0 надо 2а0 + Y = a1. Как видно в данном случае знак остатка определяет не только очередную цифру частного, но и характер следующей процедуры: прибавления делителя к сдвинутому остатку, если этот остаток меньше 0, и вычитание делителя из сдвинутого остатка, если остаток больше или равен 0. Этот метод деления получил название деления без восстановления остатка.

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

Операции сложения, вычитания, умножения и деления в двоичной системе – это двоичная арифметика. Некоторые примеры двоичной арифметики рассмотрены в данной статье.

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

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

Числа записываются друг под другом с учетом разрядов. При необходимости производится перенос в старший разряд или заем из старшего разряда.

При сложении двоичных чисел следует помнить, что в числовом двоичном ряду после 1 идет 10. Это означает, что 1 + 1 = 10, а 11 + 1= 100.

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

Рис. 1. Медаль в честь двоичной системы счисления

Сложение

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

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

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

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

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

Сложение Вычитание Умножение
0 + 0 = 0 0 — 0 = 0 0 ∙ 0 = 0
0 + 1= 1 1 — 0 = 1 0 ∙ 1 = 0
1 + 0 = 1 1 — 1 = 0 1 ∙ 0 = 0
1 + 1 = 10 10 — 1 = 1 1 ∙ 1 = 1

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

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

Пример : 1011,12 + 1010,112
Двоичное сложение

Интересна также ситуация, когда складываются больше двух чисел. В этом случае возможен перенос через несколько разрядов.
Пример : 111,12 + 1112 + 101,12
Двоичное сложение с переносом через разряд
При сложении в разряде единиц (разряд 0) оказывается 4 единицы, которые, объединившись, дают 1002. Поэтому из нулевого разряда в первый разряд переносится 0, а во второй — 1.
Аналогичная ситуация возникает во втором разряде, где с учетом двух перенесенных единиц получается число 5 = 1012. 1 остается во втором разряде, 0 переносится в третий и 1 переносится в четвёртый.

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

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

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

Двоичное деление

Зная операции двоичной арифметики, можно переводить числа из двоичной системы счисления в любую другую.
Пример: Перевести число 1011110112 в десятичную систему счисления.
Поскольку 1010 = 10102, запишем

Цифры двоичного деления
Полученные остатки, 10012 = 910, =1112 = 710, 112 = 310. Искомое число 1011110112 = 37910.

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

Учимся складывать, вычитать, умножать и делить двоичные числа — работаем с фундаментальными законами современной цифровой электроники.

Иллюстрация: Катя Павловская для Skillbox Media

Дмитрий Зверев

Мы привыкли считать всё в десятичной системе, потому что у нас 10 пальцев — и это удобно. Но если бы у нас было больше пальцев, например 12, то система могла бы быть двенадцатиричной и мы бы воспринимали её как обычную.

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

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

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

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

В десятичной системе у нас всего 10 цифр: от 0 до 9. Когда мы складываем 1 и 9, у нас получается переполнение, так как больше 9 в одном разряде нельзя записать. Поэтому мы переносим единицу в следующий, получаем 10.

Двоичная система работает аналогично: чтобы понять, как складывать числа, нужно помнить об этом переполнении. Всего в двоичной системе две цифры — 0 и 1. Если сложить 1 и 1, мы получим переполнение, а значит, единица пойдёт в следующий разряд, результатом станет 10 (только не «десять», а «один-ноль»).

Если представить правила сложения двоичных чисел в общем виде, получим такую таблицу:

Но лучше разобраться на примерах.

Пример 1. Давайте сложим 1100 и 101.

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

  • Первый: 0 + 1 = 1.
  • Второй: 0 + 0 = 0.
  • Третий: 1 + 1 = 10 — переполнение, единица переходит в следующий разряд.
  • Четвёртый: 1 + 0 + 1 = 10 — добавляем единицу из прошлого разряда, получаем переполнение, единица переходит в следующий разряд.
  • Пятый: 0 + 0 + 1 = 1 — единица пришла из предыдущего разряда.

Пример 2. Сложим 1111 и 111.

  • Первый: 1 + 1 = 0 — единица переходит в следующий разряд.
  • Второй: 1 + 1 + 1 = 1 — единица переходит в следующий разряд.
  • Третий: 1 + 1 + 1 = 1 — единица переходит в следующий разряд.
  • Четвёртый: 1 + 0 + 1 = 0 — единица переходит в следующий разряд.
  • Пятый: 0 + 0 + 1 = 1.

Вроде бы пока несложно. Так что попробуйте сами сложить 1101 и 1011, чтобы закрепить знания.

1101 + 1011 = 11000.

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

Умножение в двоичной системе, как в десятичной, основано на сложении — и умении считать в столбик.

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

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

Пример 1. Умножим 110 на 10.

Здесь мы воспользуемся привычным школьным «столбиком»: сначала умножаем верхнее число, 110, на 0, затем на 1, а потом складываем полученные два и получаем результат.

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

  • 110 × 0 = 000;
  • 110 × 1 = 110.

Сдвигаем 110 на один разряд влево и складываем результаты промежуточных умножений:

  • 000 + 1100 = 1100.

Мы получили 1100, потому что сместили результат умножения 110 × 1 на один разряд влево, а затем добавили один 0 справа — как в обычном умножении.

Пример 2. Давайте теперь умножим 101 на 101.

Не пугайтесь, что у нас получилось три числа, которые нужно сложить: правила остаются теми же. Ещё можно приписывать дополнительные нули туда, где находится пустое пространство — это поможет не запутаться.

  • 101 × 1 = 101;
  • 101 × 0 = 000;
  • 101 × 1 = 101.

Снова сдвигаем влево промежуточные результаты и складываем:

  • 101 + 0000 + 10100 = 11001.

Попробуйте сами умножить 1101 на 111.

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

Правила двоичного вычитания тоже ничем не отличаются от десятичного. Мы также вычитаем поразрядно и, если нужно, занимаем единицу из старшего разряда.

Таблица вычитания выглядит так:

Заметьте, что 0 − 1 = 1. Это всё потому, что мы занимаем единицу из старшего разряда и получаем 10, или 2 в десятичной системе, а если вычесть из 10 число 1, получим 1 (ведь 2 − 1 = 1).

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

Пример 1. Вычтем из 1100 число 11.

Разберём подробнее поразрядно:

  • Первый: 0 − 1 = 1 — занимаем единицу из старшего разряда.
  • Второй: 1 − 1 = 0 — так как отсюда заняли единицу, но у нас её не было, мы взяли её из следующего разряда и вычли единицу из этого.
  • Третий: 0 − 0 = 0 — из этого разряда единица ушла в первый.
  • Четвёртый: 1 − 0 = 1 — здесь всё нормально.

Всё то же знакомое нам вычитание.

Пример 2. Вычтем из 1011 число 101.

Тот же алгоритм по разрядам:

  • Первый: 1 − 1 = 0.
  • Второй: 1 − 0 = 1.
  • Третий: 0 − 1 = 1 — заняли единицу из следующего разряда.
  • Четвёртый: 0 − 0 = 0 — отдали единицу в предыдущий разряд.

Кажется, что всё несложно. Попробуйте теперь сами вычесть из 11010 число 1111.

Деление двоичных чисел

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

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

Пример 1. Поделить 1100 на 10.

У нас есть только два варианта: умножить делитель на 1 или на 0. Поэтому алгоритм будет таким:

  • Смотрим на делимое, видим, что первые две его цифры — 11. Умножаем делитель на 1 и вычитаем из 11 число 10.
  • Получили 1, дописываем справа следующую по порядку цифру — 0. Теперь 10 равно делителю, значит, тоже умножаем его на 1 и вычитаем.
  • Получаем 0. Но у нас ещё остался один 0 у делимого — дописываем его справа от полученного 0.
  • Число 0 меньше, чем 10, поэтому умножаем делитель на 0. Получаем конечный ответ — 110.

Пример 2. Поделить 10010 на 110.

  • Первые три числа делимого меньше, чем делитель — значит, умножаем делитель на 0 и вычитаем. Получаем 100.
  • Дописываем 1 справа от 100, видим, что 1001 больше, чем 110, поэтому умножаем делитель на 1 и вычитаем его из 1001. Получаем 11.
  • Дописываем 0 справа. Полученное 110 равно делителю, поэтому тоже умножаем его на 1, получаем конечный результат.

Попробуйте сами теперь поделить 10100 на 100.

Что запомнить

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

Читать:
Из чего сделан велосипед

Похожие публикации