Виды информации и ИТ ее обработки. Серия «Информатика и ИТ». Nikolay Morozov
мы умножаем первое число на каждый разряд второго и записываем полученные результаты под первой чертой, одно под другим со сдвигом. Затем полученные промежуточные результаты складываем с учетом сдвига. Однако в случае с двоичными числами имеется одно существенное отличие. Так как любой разряд двоичного числа либо ноль, либо единица, то промежуточное умножение сильно облегчается. В самом деле, любое число, умноженное на единицу, равно самому себе. Любое число, умноженное на ноль, равно нулю. Именно поэтому умножение двух двоичных чисел сводится к операциям сдвига и сложения. Это очень важно для построения вычислительных машин. Для реализации операций сложения и умножения нужны только сумматоры и сдвиговые регистры.
Вычитание и деление. Для того чтобы упростить (для машинной обработки) операцию вычитания, был придуман так называемый «дополнительный код». Можно сказать, что при помощи этого кода записываются отрицательные числа. Чтобы записать двоичное число в дополнительном коде:
– необходимо инвертировать все его разряды (т.е. перевести число в обратный код — заменить его содержимое на противоположное),
– а затем прибавить единицу.
Таблица 1.2.Запись числа в дополнительном коде
Правило вычитания двух двоичных чисел:
– Перевести вычитаемое в дополнительный код.
– Сложить эти два числа (уменьшаемое и вычитаемое в дополнительном коде).
– При сложении бит переноса не учитывать.
– Полученный результат – разность.
Например, найдем разность между числами 13 и 5
Запишем в двоичном коде: 13 (00001101), 5 (00000101).
Переведем в дополнительный код вычитаемое: (5 (11111011).
Бит переноса из старшего разряда отбрасываем. Результат: 10002=810.
Деление в двоичной системе происходит так же как в десятичной системе счисления.
Правила деления чисел сводятся к сдвигу разрядов числа и вычитанию. Вычитание сводится к сложению чисел, одно из которых представлено в дополнительном коде.
При выполнении действий двоичной арифметики возможны ситуации, приводящие к неточности результата или ошибке. Так, при использовании целочисленного представления возможна ситуация потери старших разрядов результата (в случае превышения разрядов сетки). Еще одна парадоксальная ошибка «целочисленной арифметики» – при использовании знакового формата при сложении или умножении положительных чисел возможно получение результата, неверного по знаку (с единицей в знаковом бите) и модулю (без учета знакового бита). Для форматов с плавающей точкой возможна другая опасность: выход за границу допустимого диапазона значений. Это может произойти, если порядок результата оказывается больше максимального возможного значения. Обычно в такой ситуации выполнение программы прерывается по ошибке – «арифметическое переполнение». Схожая ситуация, когда результат меньше минимально возможного приведет к исчезновению числа (превращению в нуль, что опасно,