Арифметические операции над числами с плавающей запятой.

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’zpqz.

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’zpqz.

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, называются логическими или булевыми функциями. Исследованиями свойств логических функций занимается математическая логика (двоичная алгебра).