Арифметика в позиционных системах счисления: правила двоичных вычислений
В основе двоичной системы счисления лежит тот же принцип позиционности, что и в привычной нам десятичной системе. Это означает, что значение каждой цифры в числе напрямую зависит от её позиции (разряда). Главное отличие заключается в основании системы: двоичная система использует всего две цифры — 0 и 1. Вследствие этого арифметические действия в двоичной системе выполняются по общему принципу «в столбик», но имеют свои специфические таблицы и правила переноса разрядов.
1. Двоичное сложение
Сложение двоичных чисел выполняется поразрядно, начиная с младшего (самого правого) разряда к старшему (левому). Базовые правила сложения двух двоичных цифр описываются следующей таблицей:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10₂ (записывается 0, а единица переносится в следующий старший разряд)
Если в текущем разряде уже присутствует единица переноса из предыдущего младшего разряда, то при сложении двух единиц получается сумма 1 + 1 + 1 = 11₂. В этом случае в текущий разряд ответа записывается 1, и ещё одна 1 переносится в следующий старший разряд.
При работе с дробными числами перед началом вычислений разряды слагаемых обязательно выравниваются относительно разделительной точки. Если в дробной части одного из чисел знаков меньше, к нему справа приписываются незначащие нули. В процессе сложения точка в итоговом результате сносится строго под точками слагаемых.
Рассмотрим пример сложения двоичных дробей с переносом единиц через разделительную точку:
Разбор примера по разрядам (справа налево):
- Разряд 2⁻²: складываем нижний ноль выравнивания и верхнюю единицу: 1 + 0 = 1. Записываем 1 в ответ.
- Разряд 2⁻¹: складываем две единицы: 1 + 1 = 10₂. Записываем в ответ 0, а 1 переносим в следующий разряд.
- Разделительная точка: переносим точку в ответ строго под слагаемыми.
- Разряд 2⁰: складываем цифры целой части с учетом единицы переноса: 0 + 1 + 1 (перенос) = 10₂. Записываем в ответ 0, а 1 переносим дальше.
- Разряд 2¹: складываем старшую цифру с переносом: 1 + 1 (перенос) = 10₂. Записываем 0 в ответ, а оставшаяся единица образует новый старший разряд результата.
2. Двоичное вычитание
Вычитание двоичных чисел на практике также выполняется столбиком от младших разрядов к старшим. Базовая таблица вычитания двоичных цифр имеет следующий вид:
- 0 − 0 = 0
- 1 − 0 = 1
- 1 − 1 = 0
- 10₂ − 1 = 1 (производится заём единицы из старшего разряда, которая в текущем младшем разряде равна двум: 2 − 1 = 1)
При вычитании столбиком уменьшаемое всегда должно быть больше или равно вычитаемому. Если в исходном выражении это не так, знаки меняют местами, а к итоговому результату приписывают минус. Как и при сложении, дробные части чисел предварительно выравнивают по разделительной точке с помощью незначащих нулей.
Основную сложность в вычитании представляет каскадный заём. Если текущая цифра уменьшаемого равна 0, а из неё нужно вычесть 1, алгоритм движется влево до первой встречной единицы старшего разряда. Эта единица забирается (превращается в 0), а все промежуточные нули, через которые проходил заём, становятся равными 1 (так как по правилам двоичной системы позиционного заёма \(10_2 - 1 = 1\)).
Рассмотрим пример каскадного вычитания двоичных дробей через точку:
Разбор примера по разрядам (справа налево):
- Разряд 2⁻²: после выравнивания вычитаем из верхнего нуля нижнюю единицу (0 − 1). Нам нужен заём. Ближайшая единица находится в разряде 2⁻¹. Мы забираем её (там остаётся 0), а наш текущий разряд получает значение 10₂. Вычисляем: 10₂ − 1 = 1. Записываем 1.
- Разряд 2⁻¹: здесь остался 0 после предыдущего займа. Нам нужно вычесть 1 (0 − 1). Снова требуется заём. Двигаемся влево через точку. В разряде 2⁰ стоит ноль, поэтому заём идёт транзитом дальше, превращая этот ноль в единицу. Истинным донором становится единица в разряде 2¹. Она обнуляется, а наш разряд 2⁻¹ получает 10₂. Вычисляем: 10₂ − 1 = 1. Записываем 1.
- Разделительная точка: переносим точку в ответ строго под уменьшаемым и вычитаемым.
- Разряд 2⁰: этот ноль превратился в 1, пока через него «летел» заём для дробной части. Вычисляем: 1 − 0 = 1. Записываем 1.
- Разряд 2¹: эта единица была отдана при заёме на шаге 2, поэтому разряд стал равен 0. Вычисляем: 0 − 0 = 0. Ведущий ноль в итоговом ответе опускается.
3. Двоичное умножение
Умножение двоичных чисел выполняется по тем же правилам, что и умножение десятичных чисел столбиком. Главное преимущество двоичной системы — предельно простая таблица умножения, состоящая всего из четырёх базовых правил:
- 0 × 0 = 0
- 0 × 1 = 0
- 1 × 0 = 0
- 1 × 1 = 1
Процесс вычисления состоит из двух последовательных этапов:
- Поразрядное умножение: верхнее число последовательно умножается на каждый разряд нижнего числа (множителя), начиная справа налево. Если текущая цифра множителя равна 1, промежуточная строка полностью дублирует верхнее число. Если равна 0 — записывается строка из нулей. Каждая новая промежуточная строка сдвигается на один разряд влево относительно предыдущей.
- Сложение промежуточных результатов: все полученные строки складываются между собой по правилам двоичного сложения столбиком с учётом их ступенчатого сдвига.
Правило запятой для дробных чисел: при умножении двоичных дробей в столбик сначала убирают разделительные точки и перемножают числа как целые. В полученном финальном ответе необходимо отделить запятой знаки дроби справа налево. Количество отделяемых знаков равно сумме знаков после точки у обоих исходных чисел.
Рассмотрим пример умножения двоичных дробей 1.1 × 1.01 со смещением строк и последующим переносом запятой:
Разбор примера по шагам:
- Подготовка: у первого числа (1.1) один знак после точки, у второго (1.01) — два знака. Временно убираем точки и переходим к умножению целых чисел 11₂ и 101₂.
- Первая промежуточная строка: умножаем 11₂ на младшую единицу множителя. Получаем строку 11.
- Вторая промежуточная строка: умножаем 11₂ на ноль множителя. Получаем строку 00, сдвинутую на один разряд влево.
- Третья промежуточная строка: умножаем 11₂ на старшую единицу множителя. Получаем строку 11, сдвинутую ещё на один разряд влево.
- Сложение и фиксация точки: складываем три строки с учётом сдвигов, что даёт число 1111₂. Считаем сумму знаков после точки исходных чисел: 1 + 2 = 3 разряда. Отсчитываем в ответе 3 цифры справа налево и ставим разделительную точку. Итоговый результат: 1.111.
4. Двоичное деление
Деление двоичных чисел выполняется методом «уголка» (длинного деления) аналогично десятичной арифметике. Однако в двоичной системе этот процесс значительно проще: на каждом этапе делитель может поместиться в неполном делимом либо ровно 1 раз, либо 0 раз. Таким образом, отпадает необходимость в подборе промежуточных цифр частного.
Алгоритм деления целых двоичных чисел состоит из следующих шагов:
- Выделение неполного делимого: двигаясь слева направо по разрядам делимого, выбирается минимальная группа цифр, которая больше или равна делителю.
- Сравнение и вычитание: если выделенное неполное делимое больше или равно делителю, в частное записывается 1, а делитель вычитается из этого неполного делимого. Если оно меньше делителя — в частное пишется 0.
- Снос следующей цифры: к полученному остатку сносится следующая цифра делимого, образуя новое неполное делимое, и цикл сравнения повторяется.
Переход к дробной части: если целые разряды исходного делимого полностью закончились, а текущий остаток всё ещё не равен нулю, деление продолжается в дробной части. Для этого в строку частного ставится разделительная точка, а к полученному остатку справа приписывается незначащий ноль. Вычисления продолжаются по тем же правилам до тех пор, пока очередной остаток не станет равным нулю.
Рассмотрим пример деления двоичных чисел уголком с переходом в дробную часть и конечным результатом:
Разбор примера по шагам:
- Шаг 1: выделяем первое неполное делимое — три левых знака 101₂. Число 101₂ больше делителя 100₂. Записываем в частное 1, вычитаем 100₂ и получаем остаток 1.
- Шаг 2: сносим последнюю целую цифру делимого — 1. Получаем число 11₂. Оно меньше делителя 100₂. Записываем в частное 0, а остаток остаётся равным 11₂. Целая часть делимого полностью закончилась.
- Шаг 3 (Разделительная точка): поскольку целые цифры закончились, ставим в частное разделительную точку. К остатку 11₂ приписываем справа ноль дробной части. Получаем число 110₂. Оно больше делителя 100₂. Записываем в частное 1, вычитаем 100₂ и получаем остаток 10₂.
- Шаг 4: приписываем к остатку 10₂ ещё один ноль дробной части. Получаем число 100₂. Оно равно делителю 100₂. Записываем в частное 1, вычитаем 100₂, и остаток становится равным 0. Деление успешно завершено. Итоговый результат: 10.11.
Особенности деления двоичных дробей
Если в делении участвуют дробные двоичные числа, математические законы позволяют легко привести их к привычному целому виду. Наличие разделительной точки в делимом никак не мешает расчётам, однако делить на дробное число «уголком» напрямую нельзя. Поэтому ключевое правило двоичного деления дробей заключается в избавлении от точки в делителе.
Для этого выполняются следующие действия:
- В делителе разделительная точка переносится вправо до самого конца числа, превращая его в целое.
- В делимом точка переносится вправо на то же самое количество разрядов, на которое она была смещена в делителе.
- Если в делимом целых цифровых разрядов для переноса не хватает, к нему справа приписывается необходимое количество незначащих нулей.
После такого выравнивания исходный дробный пример превращается в обычное деление целых чисел, а итоговое частное остаётся абсолютно неизменным.
Рассмотрим пример деления двоичных дробей 1.1 и 0.11 со смещением знаков:
Разбор примера по шагам:
- Подготовка: нам необходимо разделить дроби 1.1₂ на 0.11₂. В делителе (0.11) два знака после точки. Чтобы сделать его целым, переносим точку на 2 разряда вправо — получаем число 11₂. В делимом (1.1) после точки стоит всего один знак, поэтому при переносе на 2 разряда мы дописываем справа один ноль — получаем число 110₂. Исходный пример превратился в деление целых чисел: 110₂ ÷ 11₂.
- Шаг 1: выделяем первое неполное делимое — две левые цифры 11₂. Число 11₂ равно делителю 11₂. Записываем в частное первую цифру 1, вычитаем 11₂ и получаем промежуточный остаток 0.
- Шаг 2: у нас остался последний неиспользованный ноль в конце делимого. Так как остаток от предыдущего вычитания равен нулю, мы просто переносим этот ноль из делимого в конец нашего частного.
- Завершение: Финальный ответ: 10₂.