Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава _2_А5.docx
Скачиваний:
99
Добавлен:
14.09.2019
Размер:
265.24 Кб
Скачать

2.6 Выполнение длинных операций (* и /) над арифметическими кодами.

1. Алгоритм умножения с фиксированной запятой.

конец

идти

i<n

Yi=1

i = i+1

Сдвиг кода множимого вправо

i = i+1

Анализ содержимого кода множителя

Формирование знака произведения [X]зн.+[Y]зн.

Ввод прямых кодов операндов X и Y

начало

1

2

3

4

7

5 Нет

9

Да 6

10

12

Да

8

Передача кода множителя Х в сумматор

11 Да

Нет

Пример: X = -0,1011 [X]пр.=1 1011

Y = 0,1001 [Y]пр.=0 1001

Знак Х

Знак Y

Код [X]зн.

Код [Y]зн.

Код [X+Y]зн.

+

+

0

0

0

+

-

0

1

1

-

+

1

0

1

-

-

1

1

0

[X*Y]зн.

ОДС

1011

1001

1011

1011

[X]зн. [Y]зн.

,1100011

[X*Y]пр.= 1,0110

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

Пример: X/Y

X = 0,11011101 [X]пр.= 0 11011101

Y = -0,10010000 [Y]пр.= 1 10010000

[X-Y]пр.= 1,110001

11011101 1001

1001 1100 01

1001

1001

1010

1001

10

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

Шаг 1.

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

  1. [X*Y]зн.~[mX]зн.+[mY]зн.

Шаг 2.

Порядок произведения так же равен сумме порядков сомножителей.

  1. Px-y= Px+ Py

Шаг 3.

Мантисса произведение, получается, по алгоритму умножения чисел в режиме с фиксированной запятой.

Шаг 4.

При необходимости восстановления нормальной формы мантиссы производится нормализация.

Нормализация мантисс mxy

X = 0, 1101*10-111 Px= -111 Px-y= 100

Y = -0,1010*101011 Py= 1011 X*Y= -0,100000*10100

[mx]пр.= 0 1101

[my]пр.= 1 1010

1101

1101

0,10000010

Алгоритм деления.

Шаг 1.

  1. [x/y]зн.= [mx]зн.+ [my]зн.

  2. Px/y= Px-Py

  3. mx/y (мантисса частного получается используя цикл процедур вычитания и сдвига)

  4. нормализовать mx/y (при необходимости нормализации)

X = -0,11011111*101101 Px/y = Px – Py = 100

Y = -0,10010001*101001

11011111 10010001

10010001 11……..

10011100

10010001

101

X/Y = +0.11*10100

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

1.Назовите разновидности разрядных сеток для представления чисел в технических системах?

2. Какие поля содержит разрядная сетка для представления чисел с фиксированной запятой?

3. Какие поля содержит разрядная сетка для представления чисел с плавающей запятой?

4.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]