Солонина А., Улахович Д. Алгоритмы и процессоры цифровой обработки сигналов (2002) (1095891), страница 30
Текст из файла (страница 30)
3.)6, операция сложения в лополцительном каче вывоз' ОК и настоя одгиыкоио для целых и дробных чисел ири целочисленнои н лро арифметиках. На рис. 3.!7 приведен прилтер вычитания чисел в дополнигсльно м коде кар беззнаковых чисел иа правилал/ обычной двоичной арифметики. ! Р т актовхв исходных данных и результата аналогична рпс. 3. 16. Все гпсла предо г дв.~е/1Н в 11юрмате "слово" длиной б битов. е) целые числе (2<< 2<) — 2<= 96 — 16=80 б) дробные числе; дробная арифметике (2 т + 2 т! — 2-3 = 0,625 и) дробные числа; целочисленная ер<крметиим уменьшвемое, вычитаемое и разность — целые сп которые месопвбируются к машинное единице равной 2' Рис. 3.17.
Вычитание в дополнительном коде П об Робчемы переполнения при сложении и вычптдгииг рассмйтриваготся в а/све 4. Умножение Как в/ гана из рис. 3. 16 и 3. !7, при сложении н выч<пвиии Формат ирелставления цска хочных данных и результата — одинаковый, 1)д рис. 3.!8 приведен "Риме Р умножения двух беззнаковых чисел, представленных в Формате "слова" ллцно<игеть 1нои 4 бито в доиачнительцом коле. Произведение этих чисел должно ет/» дит ну 4 . 2 — ! = 7 битов без потери точности.
"Л1апнтм Р 1тмы умножении, рсализовзнныс в различных процессорах. отличаются от об) бгцеирииптого в двоичной арифметике: один нз позли<жмых алгорит- 1/ов 61, улет рассмотрен палее. Сначала обсуди м ре вшшппьт ул//о кге////я. Глава 3. Данные О»ОО Х о о О»ОО О»ОО оо о о о оо о Десятичные С» элеиееяенты 3 2 1 О -2' + 2» + 0 + 2' + ~ = -12 значащие циФры Расширение знака ла Алгоритмы н процессоры цифровой обработки сипяллпе О ОО 1 1 О О Рис. 3.18. Умножение е дополнительном коде Без потери точности произведение двух беззнаковых чисел, представленных в формате "слово" длиной и битов, должно иметь ллину (2п — !) битов, В процессорах с ФТ результат улсножения размсшается либо а форлсате "лвойное слово" Л1бР:15Р длиной 2л битов.
либо в Л(ВР:15Р части расширенного слова также длиной 2п. Ото»ода возникает проблема "лишнего" бита. Кроме того, появляется вопрос о сохранении вычисленного произведен»и в формате "слово" длиной и битов — какую из частей произведения МВР илп 15Р следует сохранять? Выясним эти моменты на одном примере умножения (рис. 3. !8) при различных трактовках типа данных и различных арифлсетпках в процессоре.
Рассмотрим следуюшие чегыре ситуации: !. Умножеш»е целых чисел при цепочке»елкой арифметике (рис. 3.!9): ° "лишний" бит используется как с»нпрс»с»с»с бит МВВ в слове МЬР:(5Р для лрансния рис»и»ренин снпкп результата; 7 6 5 Л 3 2 1 О Рис. з.чо. умножемие цеяых чисел пря целочисленной ариФметике знакпеылш становятся г)аа с гарпшх бита. знач из сом»»ожсстелей не прел сша~с- сс»2 размещается в младшем слове 15Р, и его можно сохрани»ь в формате "слово" без потерь; старшее слово МВР служит дзя расшнрснпя знала; ° если 'ысс»са сомножспелей превышает с»/2, для храпения резулюпт.с потребуется даа слова н специальная организация дальнейшей обработки 1. Умножение дрппньсх шсел при с(е»пес»с»се»с»»асс арифлсстике; в этол» случае пробные числа заменяются нх сгеспчиссенныин зк»сивалепгалсн (рпс. 3.20): ° "лишний" бит используется.
как сншриаис пинс МВВ в слове МБР:15Р для храпения рпситренил знака рез)' сьтата; ° знак»пылю становятся двп стар»пил бпш. знпчппиини — остальные бсстьс; ° в формате "слово" солрасшегся гас»расее счово Л(БР результата, лсладшсе слово 15Р отбрасывается: перед выпал»сенс»ем дальнейших операций. для устранения дишпего знакового бита, содержимое двойного слова Мбрй ЬР следует счвинуть на олин бпт влево.
3. Умножение дробных чисел при дробной арифмес и ко (рис. 3.2 1): ° "лишний" бит используется, как иисдтсп) бст» ! БВ в словс МОР:15Р лля хранения нуля; )5В = О; ковым о тсется адин старшин бит з а с тальные биты ° для хранения результата в формате "слово" выбирается г»ссср»с»ее слово МБР, младшее слово 15Р отбрасывается. 4. Умиожен ение сгв»ьсх шсел ири дрппнаи арифметике; в этол» случае целыс $ чиста залсеняютси их дробными зьв»сва.»с»стал»и (рис. 3.22): ° "лишний" бит пспочьзуется, лак лыпдсиий бсст 15В в слове МБР:15!» лля храпения нуля; 1 5В = О; знаковым сктается адин старший бит.
знпчптиии — остальссые биты пез млад»нега пита ХЮЙ после сдвига вправо на ! бит получнезся результат точно такой же. как целое число при целочисленной арифметике — с расширением знака в двух старших битах слова Л(БР:1 бр (сравните с рис. 3. !9). (хгм~тим, что .. ч о отсутствие лишнего" знакового бита в представлении резульения дрооных чисел при дробссой арифметике, наряду с отсутст- анелс нсобло» ходимосги масштабировании лю»ныл. считается преимушеством "роб»со»с арифметики.
Т ~перь асом . женил, р отрим очип из наиболее распросзраненнмх алгоритмов умноя, реализованный в большинстве процессоров с ФТ, Глава 3. Данные двсдтичные зкаиавденты 3 г 1 0 Мзшиинзв единица Десктичныв Эквиваленты 2 ' = 0,5 3 2 1 0 2т/В = 0,5 гт+ 2'+ 2"' = 0,375 -гтга гтй + 2т/В = -0.375 -2 + 2 + 2- + гч = -0.1 575- точный Результат 2 1 0 Значащие биты дробного числа Расширение энвкв Значащие биты целочисленного эквивалента дробимо числа ьзр 3 2 1 1.3Р г' * 2 т = -0,25— "Рибок»штктый результат после сдвига мзргсВР из 1 бит алеео 2т =126 3 г 1 о -2"Л 2 В + гт/Я + Р/125 + + 2//12 В = -о, 1В75 — точныи результат Значащие биты целочисленные эквивалента дробного числа г' В 3 2 1 О /З+ г /В+ гг/В = -025- лриближеннь/й результат 3 З-знвк 4лгоритмы и процессоры цифровой обработки сигналса П Алгор///ли уд/н/х//ге////д двух беззнаковых двоичных чисел т и р, представленных в дополиитсльнозг коде в формате "слово" длиной //.
Рис. 3.20. умножение д/эобнык чисел при целочисленной арифметике 7 б 5 4 3 г 1 0 Рис 3 21 Умножение кнык чисел при дробной арифметике хах/ ... Х/ ... х„,; лез,и 1, значения / х битов ВКздн/а . ст счедукти/гте и/Лги: и Г-/го/доска к и//к/н /=и — 1; нз'1альная сумма локвльнык и Оизв р изведении х/+1 = 0 ... О (формат "слово Тет// цик /а: вы и/слястся сумма. У ЛОКВЛЬИЫХ ПРОИЗВЕДСНИй Ю/= Юг ь/ + Хг если х-= О, значение /-Югь/ У Хг.' ;чепце х/ не меняется; Глава 3 Данные Вмхпд цз 14ггкга д ти ныв Мвюиннвл единице эквиваленты Равна 1, что соответствует игвк по нодулю целому числу гы 6 Э г 1 О 3 2 1 О -г' В + гм В + 2-' 6 = -З значащие еитм досолив эквивэлентв целого числе не увоъеэетсв Мвщиннэв вдиниггв Рвано 1, что соответствует лгвк по модулю целому у 2«2- 64 1.ВР МБР Пес двигвызптьаэ нет агм ел Рево З 2 1 О -24.64 2-'-64+2 т 64 2 '.64=-12- точнмя Результат Этап Результат Подготовка к циклу г гг 1=4 1 3, Тедо цикл Знвчмциэ виты дрооного эквиввпентв целого числт Регмгиртниэ 6 64 ОООО 63= аг4 у ХЭ Так иаи х,= о Расширение знака аэ ьад = 6 =ОООО зэ= ООООО 1= 1'-1РЭ вЂ” ! =2 ~= ~4 у.
хт Так как хэ = О Расширение знака 62 Алгоритмы и процессоры цифровой обработки сигнадое если х, = 1, к значению у; прибавляется у при этом оба слагаемых вы ровнены по левому краю; ° выполняется расширение знака суммы зг на олин бит; ° присваивается г = г — 1. Рмо. 3.22.
Умножение целых чисел прм дробной ариФметике 3. Г)рпдеркп пкпгг«пдггл цггкггп; ° цикл повторяется ло г' = 1 включительно. ° при г = 0 вы шсчяется разность ят= у! — у хо'. если хо = О. значение л! не меняется; если хо = 1, нз значения уо вычитается у; прп этом вычитаемое и уменьшвемое выровнены по левому краю; ° разность д! равна произволению беззнаковых чисел х и У в допсл1штельном козе и имеет дгппту (2гг — !) битов, гле старший бпт — знаковый; ° конечный результат формируется в формате "двойное слово" данной 2гг; при этом "лпшнии" бит используется по-разному в зависимости от типа арифметики, а именно: "лишний" бпт применяется, как старший бит МБВ для расширения знака, при целочисленной арифметике: "лишний" бит играет роль 611адшсго бича 15В (!.БВ = 0) прп лробной арифметике.
П ри вы«и 'нии в цикле сумме! 6 локальных лро зведений перел,сы влево от старшего разряда игнорируются. П Рпведем пример умножения в лополпительном коде двух чисел х и у длиной д = 4 бит; х = хо х, тт тз = 1! 00; У = Уо У! Уз уз = ! 101. Цвклическгуй алгоритм умножения показан в табл. 3.6. таблиЦазб Циюическии ри .умно ия Алгоритмы и процессоры цифровой обработки сипчзпов Глава 3. Данные Таблица З.В (окончание( Результат Этап )=)-1 2 — 1=1 з! = зх + У х, Так как х,=1 3 2 ! О з) слово в двойное слово з, = 000000 + !10! 7 6 5 4 3 2 1 О з, -110100 81 = 1110100 Расширение знака з, 1=! — 1 = 1 — 1 = 0 3 2 ! О 6) слово в рзсшнрвннов слово Выход из цикла ЗО= 91 У ХР Так как хе = 1 9 8 7 6 5 4 3 2 1 О з) двоннпе слово в расширенное споео Т б 5 4 3 2 ! О Результат при целочисленной арифметике 00001 100 00011000 Результат при дробной арифметике 9 8 7 6 5 4 3 2 ! О Из приведенного примера видно, что плерпдня уинпжен)н) выполняется пдггнакозп — как е йеззнакпзыии чнс)втд независимо от тппа лг!нных и арифметики, различие Проявляется только на зтанс сохранения конечного рсзульта!а в формате "двойное слово" длиной 2л.