Читать книгу Виды информации и ИТ ее обработки. Серия «Информатика и ИТ» - Николай Морозов - Страница 6

Системы счисления. Компьютерная арифметика
Компьютерная арифметика

Оглавление

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

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

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


Сложение чисел нужно производить поразрядно, начиная с младшего разряда. При этом применяются следующие правила:


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

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


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

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

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

– а затем прибавить единицу.


Таблица 1.2.Запись числа в дополнительном коде


Правило вычитания двух двоичных чисел:

– Перевести вычитаемое в дополнительный код.

– Сложить эти два числа (уменьшаемое и вычитаемое в дополнительном коде).

– При сложении бит переноса не учитывать.

– Полученный результат – разность.

Например, найдем разность между числами 13 и 5

Запишем в двоичном коде: 13 (00001101), 5 (00000101).

Переведем в дополнительный код вычитаемое: (5 (11111011).


Бит переноса из старшего разряда отбрасываем. Результат: 10002=810.

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

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

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


Булевы функции. Сложение по модулю два


Говоря об арифметических операциях с двоичными числами нельзя не сказать о логических операциях с ними. В XIX веке английский математик Джордж Буль разработал основные положения алгебры логики, ныне используемые для формального описания узлов ЭВМ. В алгебре логики (булевой алгебре) различают двоичные переменные и булевы функции.

Двоичные переменные могут принимать два значения: 0 и 1. Они обозначаются символами x1, x2, x3,…

Булевы функции зависят от двоичных переменных. Они, как и аргументы, могут принимать лишь два значения: 0 или 1, и обозначаются как f (x1,x2,x3,…) Булевы функции принято задавать таблицами истинности, где для всех наборов переменных указываются соответствующие им значения функции. Вместо значений 0,1 может использоваться любая другая пара подходящих символов, например false и true (F и T, «ложь» и «истина»). Элементарные булевы функции служат аргументами еще более сложных логических функций.

К элементарным логическим функциям относятся:

Логическое отрицание – инверсия (логическая функция НЕ). Логическим отрицанием переменной x называется такая булева функция f1 (x), которая имеет значение 1, когда x = 0 и значение 0, когда x = 1. Булева функция НЕ обозначается в виде f1 = x и читается: «f1 есть (эквивалентно) не x».


Логическое умножение – конъюнкция (логическая функция И). Конъюнкция двух (или любого другого числа) переменных x1 и x2 принимает значение 1 только на наборе, в котором все переменные имеют значения 1. На остальных наборах эта функция имеет значение 0.


Логическое сложение – дизъюнкция (логическая функция ИЛИ). Дизъюнкция двух (или любого другого числа) переменных x1 и x2 имеет значение 0 только на наборе, в котором все переменные имеют значение 0. Если хотя бы одна из переменных равна 1, функция будет иметь значение 1.


Элементарные логические функции НЕ, И, ИЛИ являются основными логическими функциями.

Весьма значимой также является еще одна булева функция: сложение по модулю 2

Сложение по модулю 2 – строгая дизъюнкция (исключающее ИЛИ). Эта функция переменных x1 и x2 имеет значение 0 на наборе, в котором переменные равны. Иначе говоря, результат равен 0, если оба операнда равны; во всех остальных случаях результат равен 1.


Приведем пример суммирования по модулю 2 двух двоичных чисел:


Вопросы для самопроверки


– Дайте определение системы счисления.

– Что называется основанием позиционной системы счисления?

– Какое число будет следующим за 10110012?

– Какое число будет предшествовать числу 1008?

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

– Почему для хранения чисел в компьютере используют форматы целых и вещественных чисел?

– К каким операциям сводят все арифметические действия в двоичной арифметике?

– Какие элементарные логические функции являются базовыми для построения логических выражений?

– Какие элементарные логические (Булевские) функции Вы можете назвать?

– Выполните операцию двоичного сложения: 1110110 +10101010.

Если возникнут затруднения, то обращайтесь:

– к детям (класс 9 и выше);

– к ИИ (нейросети) Например, решить 10 пример:

МашаGPT-3.5

Для выполнения операции двоичного сложения чисел 1110110 и 10101010, давайте следует шаг за шагом.

– Для начала приведем оба числа к одинаковой длине, дополнив меньшее число нулями слева:

01110110

– 10101010

– Теперь приступаем к сложению столбиком, начиная с самых младших разрядов:

01110110

10101010


100000000

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


4. Так как мы складываем два числа по модулю 2, переносим старший разряд, а остальные биты не изменяются, получаем:


00000000

– 1 (перенос)

100000000


5. Итак, результат сложения чисел 1110110 и 10101010 в двоичной системе равен 100000000.


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


Таким образом, результат сложения чисел 1110110 и 10101010 в двоичной системе равен 100000000 с переполнением.

– С использованием калькулятора.


Рис.1.1.Результат решения 10 примера двоичным калькулятором в сети Интернет.

Виды информации и ИТ ее обработки. Серия «Информатика и ИТ»

Подняться наверх