КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Умножение дробных чисел в дополнительных кодах
. Возможны четыре случая знакосочетания сомножителей. 1) Мн>0, Мт>0. В этом случае дополнительный код сомножителей совпадает с прямым кодом и умножение выполняется по правилам умножения в прямых кодах, в результате чего получается верный результат. 2) Мн>0, Мт<0. Так как Мн и Мт имеют разные знаки, то результат будет иметь отрицательный знак. Следовательно, результат должен быть представлен в дополнительном коде [Мн∙Мт]доп=2-Мн∙Мт. Для формирования произведения выполним умножение Мн на Мт¢ (дополнение): Мн∙Мт¢= Мн ∙(1 - Мт)= Мн - Мн∙Мт. Таким образом, погрешность Δ умножения равна разности [Мн∙Мт]доп. и Мт∙Мн¢ Δ=2-Мн∙Мт- Мн + Мн∙Мт=2-Мн=[-Мн]доп=[ [Мн]доп]доп и должна быть внесена в полученный результат в качестве поправки. Пример: Мн = 0,1011 (алгоритм умножения А) Мт = - 0,1101 Δ= [- Мн]доп = 1,0101 [- Мт]доп = 1,0011 0,0000 + 0,1011 = Мн b4 0,1011 0, 0 101 1 ∙ 2-1 + 0,1011 = Мн b3 1,0000 1 (произошло переполнение) 0 ,1 000 01 ∙ 2-1 (коррекция) 0, 0 10 0001 ∙ 2-1 ( ∙ 2-1) ∙ 2-1 0, 0 010 0001 ∙ 2-1 (( ∙ 2-1)∙ 2-1)∙ 2-1 + 1,0101 Δ = [- Мн]доп (поправка) 1,0111 0001 =[Mн ∙ Mт]доп - 0,1000 1111 Mн ∙ Mт В этом примере, а также в некоторых примерах, следующих ниже, происходит переполнение разрядной сетки, в результате которого искажаются и знаковая и значащая часть числа. Для коррекции (восстановления верного значения) производится немодифицированный сдвиг. В результате этого знаковый разряд сдвигается в значащую часть, а знаковый разряд меняет свое значение на противоположное. 3) Mн<0, Mт>0. Аналогично предыдущему случаю [Мн∙Мт]доп=2-Мн∙Мт, Мн¢∙Мт= (1 - Мн)∙Мт= Мт - Мн∙Мт. Таким образом, погрешность умножения равна разности [Мн Мт]доп и Мт∙Мн¢. Δ=2-Мн∙Мт- Мт + Мн∙Мт=2-Мт=[-Мт]доп=[ [Мт]доп]доп. Использовать этот вариант неудобно, так как нужно вводить поправку [-Mт]доп в конце умножения, а в результате сдвигов Мт постепенно исчезает на регистре множителя и для поправки нужно либо вводить дополнительный регистр, либо вносить поправку в сумматор на первом такте умножения. При этом знакосочетании возможно умножение без ввода поправки. Рассмотрим этот вариант на примере умножения по алгоритму Г (это справедливо и для других алгоритмов). Мн∙Мт = А ∙ В = [ A ∙ b1∙ 2-1 ]доп + [ A ∙ b2∙ 2-2 ]доп+... + [A∙ bn∙ 2-n ]доп. На основании теоремы, доказывающей что сумма дополнительных кодов есть дополнительный код суммы, получаем [ A ∙ b1∙ 2-1 + A ∙ b2∙ 2-2 +... + A∙ bn∙ 2-n ]доп = [Мн ∙Мт]доп. В этом случае поправка вводится автоматически на каждом этапе умножения. Пример: Mн = -0,1011 Mт = 0,1101
0,00000000 + 1, 1 0101000 = [Mн ∙ b1 ∙ 2-1]доп 1,10101000 + 1, 11 010100 = [Mн ∙ b2 ∙ 2-2]доп 1,01111100 + 1, 1111 0101 = [Mн ∙ b4 ∙ 2-4]доп 1,01110001 [Mн ∙ Mт]доп -0,10001111 Mн ∙ Mт 4) Mн<0, Mт<0. Mн ∙ Mт = 2 - [Mн ∙ Mт]доп [Mн]доп ∙ (1 - Mт) = [Mн]доп - [Mн]доп ∙ Mт = [Mн]доп - [Mн ∙ Mт]доп Δ=2 - [Mн ∙ Mт]gдоп - [Mн]доп + [Mн ∙ Mт]доп = 2 - [Mн]доп = [[Mн]доп]доп Пример: Mн = - 0,1011 умножение будем выполнять Mт = - 0,1101 по алгоритму умножения Г [Mн]доп = 1,0101 [Mт]доп = 1,0011 Δ =[-Mн]доп = 0,1011 0,00000000 + 1, 111 01010 = [Mн ∙ b3 ∙ 2-3]доп 1,11101010 + 1, 1111 0101 = [Mн ∙ b4 ∙ 2-4]доп 1,11011111 + 0, 1011 0000 Δ (поправка) 0,10001111 [Mн∙ Mт]доп
Дата добавления: 2014-12-26; Просмотров: 695; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |