Информатика и ИТ. Нейросети.. Николай Петрович Морозов
деления чисел сводятся к сдвигу разрядов числа и вычитанию. Вычитание сводится к сложению чисел, одно из которых представлено в дополнительном коде.
При выполнении действий двоичной арифметики возможны ситуации, приводящие к неточности результата или ошибке. Так, при использовании целочисленного представления возможна ситуация потери старших разрядов результата (в случае превышения разрядов сетки). Еще одна парадоксальная ошибка «целочисленной арифметики» – при использовании знакового формата при сложении или умножении положительных чисел возможно получение результата, неверного по знаку (с единицей в знаковом бите) и модулю (без учета знакового бита). Для форматов с плавающей точкой возможна другая опасность: выход за границу допустимого диапазона значений. Это может произойти, если порядок результата оказывается больше максимального возможного значения. Обычно в такой ситуации выполнение программы прерывается по ошибке – «арифметическое переполнение». Схожая ситуация, когда результат меньше минимально возможного приведет к исчезновению числа (превращению в нуль, что опасно, например, при делении).
Булевы функции. Сложение по модулю два
Говоря об арифметических операциях с двоичными числами нельзя не сказать о логических операциях с ними. В 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.
Элементарные логические функции НЕ, И, ИЛИ являются основными логическими функциями.
Весьма значимой также является еще одна булева