Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по Архитектуре и организации ЭВМ.doc
Скачиваний:
128
Добавлен:
20.06.2014
Размер:
6.09 Mб
Скачать

Умножение с младших разрядов в дополнительном коде

Алгоритм:

[Z]дк= (...(0+[X]дк*[yn+1– yn])*2-1+ [X]дк*[yn– yn-1])*2-1+ ...

... + [X]дк*[y2– y1])*2-1+ [X]дк*[y1– y0]

Если yn= yn+ 1, то производится сдвиг частичного произведения.

Если yn= 0 и yn+1= 1, то к частичному произведению прибавляется [X]дк

Если yn= 1 и yn+1= 0, то из частичного произведения вычитается [X]дк.

Пример:

Умножение со старших разрядов в дополнительном коде

[Z]дк= [X]дк*[Y]дк= [X]дк*(y1– y0) + [X]дк*(y2– y1)*2-1+ ... +

+ [X]дк*(yn+1– yn)*2-n

[-X]дк= 1.01011

[Z]дк= [-X]дк+ [X]*2-1+ [X]дк*2-2*0 + [-X]дк*2-3+

+ [X]дк*2-4+ [-X]дк*2-5

+1.01011 [-X]дк

0.010101 [X]дк*2-1

________

+1.101011

1.11101011 [-X]дк*2-3

__________

+1.10010111

0.000010101 [X]дк*2-4

___________

+1.101000011

1.1111101011 [-X]дк*2-5

____________

1.1001110001

Ответ: [Z]дк= 1.1001110001

9. Лекция: Деление

Страницы: 1 | 2|3|4|вопросы|»

| учебники|для печати и PDA|ZIP

  Если Вы заметили ошибку - сообщите нам, или выделите ее и нажмите Ctrl+Enter

В лекции даны методы деления чисел с фиксированной запятой в прямых кодах и дополнительных (обратных) кодах. Описаны операции над числами с плавающей запятой – умножение, деление, сложение, вычитание.

Реализация операции деления в ЭВМ в двоичной системе счисления выполняется проще, чем в десятичной. Это объясняется тем, что при определении каждой цифры частного нужно сделать только одну пробу.

Если числа X и Y заданы в прямом коде, и они представлены с фиксированной запятой, то для выполнения деления используются два основных алгоритма:

  • со сдвигом и автоматическим восстановлением остатка;

  • со сдвигом делителя и автоматическим восстановлением остатка.

Пусть: [X]пк= sign X. x1x2..xn

[Y]пк = sign Y. y1y2..yn

[Z]пк = [X]пк/[Y]пк = sign Z. z1z2..zn

X и Y должны быть такими, чтобы:

|Z| < 1 (то есть фиксированная запятая)

Деление в прямом коде со сдвигом и автоматическим восстановлением остатка

  1. sign Z = sign X sign Y

  2. |X| - |Y| = 0

  3. Если 00, то z0= 1 и 20- |Y| =1(z0– целая часть результата).

Если 0< 0, то z0= 0 и 20+ |Y| =1

и т. д.

Пример:

[X]пк= 0.100

[Y]пк= 1.110

sign Z = 1 0 = 1

[-|Y|]дк= 1.010

+0.100 = [|X|]дк

1.010 = [-|Y|]дк

1.110 = 0= [|X|]дк+ [-|Y|]дк< 0, z0= 0

+1.100 = 20(сдвиг в ДК отрицательного числа)

0.110 = [|Y|]дк

0.010 = 1= 20+ [|Y|]дк> 0, z1= 1

+0.100 = 21

1.010 = [-|Y|]дк

1.110 = 2= 21+ [-|Y|]дк< 0, z2= 0

+1.100 = 22(сдвиг в ДК отрицательного числа)

0.110 = [|Y|]дк

0.010 = 3= 22+ [|Y|]дк> 0, z3= 1

Ответ: [Z]пк= 1.101

Деление в прямом коде со сдвигом делителя и автоматическим восстановлением остатка

  • sign Z = sign X sign Y

  • |X| - |Y| = 0

  • Если 00, то z0= 1.

Если0< 0, то z0= 0.

Разрядная сетка (n + d) разрядов, где d = log2n

Пример:

1) [X]пк= 1.1001

2) [Y]пк= 1.1011

n = 4, d = 2

Ответ: [Z]пк= 0.1100

Пример:

[X]пк= 0.100

[Y]пк= 1.110

sign Z = 0 1 = 1

[-|Y|]мдк= 11.010

|Y| = 00.110

Ответ: [Z]пк= 1.101