Арифметические операции над числами с плавающей запятой.
1.Алгоритм сложения и вычитания.
Дано: x = SxMxpqx
y = SyMypqy
Найти: z = x y = SzMzpqz
1) Находим максимальный порядок из 2-х слагаемых: q’z = max(qx, qy).
2) Если порядок ч больше или равен порядку у (qx qy), тогда определяем промежуточную мантису у: M’y = Mypqy-qx;
M’x = Mx.
Если qу qх, тогда: M’x = Mxpqx-qy;
M’y = My.
3) Определяем предварительный результат:
z’ = SzM’zpqz;
SzM’z = SxM’x SyM’y.
Если число нормализованное, то z = z’, если число не нормализованное, тогда выполняем нормализацию по следующему алгоритму:
z = H(z’)
а) Если M’z < 0, то ищем смещение - округление в меньшую сторону, тогда Mz = M’zpΔ,
qz = q’z – Δ.
б) Если М’z > 1, тогда
Mz = M’zp-Δ,
qz = q’z + Δ.
2. Операция умножения.
Определить z = x*y = SzMzpqz
1) Sz = Sx +Sy
2) Предварительная мантиса M’z = M’x * M’y.
3) Предварительный порядок q’z = qx + qy.
4) Предварительное число z’ = SzM’zpq’z.
5) z = H(z’)
3. Операция деления.
Определить z = x/y = SzMzpqz
1) Sz = Sx +Sy
2) Предварительная мантиса M’z = M’x / M’y.
3) Предварительный порядок q’z = qx – qy.
4) Предварительное число z’ = SzM’zpq’z.
5) z = H(z’)
Пример: x = 0.51*105
y = -0,52*105
Sx = + Sy = –
Mx = 0.51 Sy = 0.52
p = 10 p = 10
q = 5 q = 5
1) q = 5
2) M’x = 0.51 M’y = 0.52
3) S’zM’z = 0.51 – 0.52 = -0.01
z’ = -0.01*105
= -[[log100.01]+1] = -[-1] = 1
qz = 5-1 = 4
Mz = 0.01*101 = 0.1
z = -0.1*104
Операция умножения:
M’z = 0.51*0.52 = 0.2652
q’z = 10
z’ = -0.2652*104
Если производятся операции с двоичными числами, то необходимо в результирующем числе использовать смещенный порядок, который определяется как:
,
где М* - максимальный размер разрядной сетки.
Если число М* разрядное - М* = 16, М*/2 = 8, то к каждому порядку нужно добавлять 8, в двоичном коде 1000, при действиях с двоичными числами операции проводятся отдельно над мантисами, отдельно над порядками. Хранятся мантисы и порядки в разных местах.
12010
q = 710 0111
q = ]log2 120[ = 7
q* = 1111
S 0
q* 1111
M 0.11100
Основные операции над логическими переменными и основные логические функции.
Все переменные и функции от них, которые могут принимать только два значения – 0 и 1, называются логическими или булевыми функциями. Исследованиями свойств логических функций занимается математическая логика (двоичная алгебра).