Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпаргалка по теории автоматов (ТА).doc
Скачиваний:
204
Добавлен:
11.04.2014
Размер:
864.77 Кб
Скачать

Вопрос 7. Деление в инверсных кодах. Особенности.

  1. все операции выполняются по правилам соответствующего инверсного кода (сдвиг влево и сложение)

  2. вместо вычитания используют сложение с числом с противоположным знаком

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

  4. очередная цифра частного определяется не по знаку остатка, а по его (знаку) сравнения со знаками одного из операндов:

а) Если результат получается в прямом коде, сравниваются знаки делимого и остатка ЗнRi и ЗнА

б) Если результат получается в инверсном коде, то сравниваются знаки ЗнRi и ЗнВ

Иначе – 0.

Если знаки равны, то очередная цифра частного равна 1, иначе – 0.

1)

2)

Пример:

3/8:5/8

Aдкпк=00.011

Вдкпк=00.101

дк=11.011

Алгоритм без восстановления остатка

Регистр остатка R

Комментарий

00.011

R=A; CNT=4

+

11.011

R=A+[-B] (пробное вычитание)

=11.110

R<0 => продолжаем

11.100

R=2R (сдвиг влево),

+

00.101

т.к. R<0 => R=R+B

=00.101

R>0,A>0 => C(1)=1; CNT=3

00.010

R=2R

+

11.011

R>0 => R=R+[-B]

=11.101

R<0; A>0 => C(2)=0; CNT=2

11.110

R=2R

+

00.101

R<0=> R=R+B

=11.111

R<0; A>0 => C(3)=0; CNT=1

11.110

R=2R

+

00.101

R<0=> R=R+B

00.011

R>0,A>0 => C(4)=1; CNT=0

Округляем С до 4-х разрядов.

До округления – 0.1001 (9/16)

После округления – 0.101 (5/8)

Вопрос 8. Особенности выполнения операций в формате с плавающей запятой.

операции с плавающей запятой выполняются в три этапа:

– обработка порядков (могут меняться местами)

- обработка мантисов (т.е. умножение, сложение, деление)

- нормализация

Q≤|M|<1

M – мантисса

q – основная система исчисления.

2-1≤|M|<1 признак нормализованного числа.

А=M*2p

Если M меньше в 2 раза, то P=P+1 и наоборот.

Сложение с плавающей запятой Перед сложением обязательно выполняется выравнивание порядков. Т.е. число с меньшим порядком преобразовывается таким образом, что бы его порядок был равен порядку максимального числа (M сдвигается вправо, P увеличивается). Затем выполняется сложение мантис и нормализация выполняется в цикле. При нормализации может произойти переполнение порядка. При положительном переполнении порядка результат приравнивается к 0.

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

При выполнении деления, если делимое больше делителя, его мантиссу можно уменьшить в два раза, увеличив порядок на 1, т.е. смасштабировать делимое, либо можно зафиксировать так, чтобы целая часть частного равна 1 и после деления выполнить нормализацию.

В инверсном коде признак нормализации – равенство первого разряда мантиссы и знака разряда.

Пример:

Аок = 11.00101*2-2 + Вок = 00.10001*2-4

  1. выравнивание порядков: Рва => MB=MB/4; Рв = Рв+2 B=00.00100*2-2

  2. сложение мантисс

  1. Нормализация не требуется, т.к. |MC|≥2-1 (знак С≠МС(1))

Пример:

Аок = 11.01111*2-2 + Вок = 00.11101*2-3

1) B=00.01110*2-2

2)

  1. Знак С=МС(1) => нужна нормализация

Сдвигаем С влево, пока не будет 0 слева (в данном случае 3 раза)

Получаем 11.01111