Щербаков а. Н., Проскурін м. П., Грушко с. С. Прикладна теорія цифрових автоматів
Скачать 2.54 Mb.
|
10 СКЛАДАННЯ ЧИСЕЛ ПРИ РІЗНИХ ЗНАЧЕННЯХ ПОРЯДКІВДля операції складання чисел необхідною умовою є зіставлення вагів розрядів операндів один одному. Тому спочатку потрібно вирівняти порядки, що спричинить за собою тимчасове порушення нормалізації одного з доданків (А або В). Вирівнювання порядків означає, що порядок меншого числа треба збільшити на величину ΔР=рарв , що означає зсув мантиси меншого числа вправо на кількість розрядів, рівне ра≥рв. Тому, цифровий автомат повинен спочатку розпізнати, який порядок з двох чисел є меншим. На це вкаже знак ΔР. Якщо ра≥рв знак позитивний і навпаки, якщо знак негативний, то РА < РВ. Цю операцію іноді виконують шляхом порівняння чисел. 10.1 Алгоритм операції складання у форматі з рухомою крапкою (комою)Отже, операція складання (віднімання) виконується в наступній послідовності. 1. Перевести операнди в двійкові доповняльні (або обернені) модифіковані коди, перевіривши перед цим нормалізацію початкових чисел. 2. Визначити різницю порядків ΔР = рарв 3. Якщо ΔР>0, зсунути мантису числа В на ΔР розрядів вправо; якщо ΔР<0, зсунути мантису числа А на ΔР розрядів вправо; якщо ΔР=0, мантиси не зсуваються (розряди виходять за межі розрядної сітки мантиси втрачаються). 4. Виконати операцію алгебраїчного складання (віднімання) над мантисами. Алгебраїчне складання виконується за наступним правилом. Аналізується знак числа: - якщо знак позитивний (00), то в суматор мантиси число поступає в прямому коді; - якщо знак негативний (11), то в суматор мантиси число поступає в доповняльному (оберненому) коді; Складання проводиться порозрядно, за правилами бінарної арифметики, з перенесенням одиниці переповнення в старший розряд. Знакові розряди також беруть участь в складанні. Одиниця переповнення в старшому знаковому розряді для суматорів доповняльного коду пропадає, для суматорів оберненого коду по оберненому зв’язку додається до молодшого розряду мантиси. До представлення результату в прямому коді, після складання, аналізується знак результату: - якщо знак 01(або 10), то знак спочатку відновлюється шляхом зсуву мантиси вправо на один розряд з одночасним збільшенням порядку на 1; - якщо знак 00, то результат- число позитивне, представлено в прямому коді; - якщо знак 11, то результат- число негативне і представлено в оберненому (доповняльному) коді. В цьому випадку, потрібне перетворення числа із оберненого (доповняльного) в прямий код, шляхом інвертування числа (окрім знаку) для ДСОК і інвертування числа (окрім знаку) з додаванням 1 до молодшого розряду мантиси для ДСДК. Результату встановлюється порядок більшого за модулем числа. 5. Проводиться перевірка числа на нормалізацію (для нормалізованих чисел, після знаку мантиси повинна стояти одиниця). Якщо після знаку мантиси стоїть нуль, то число зсувається вліво на один розряд (з одночасним зменшенням порядку на 1). Перевіряється нормалізація (перевіряємо ознаки порушення γі δ). Цикл може повторюватися до досягнення умов нормалізації γ=0 і δ=0). За цим алгоритмом виконують операції складання і віднімання АЛП. Приклад. Скласти А=+0,10112-2 и В = 0,10012-3 Числа задані в природному вигляді. В АЛП використовується два суматори оберненого коду: суматор мантис (шість розрядів, включаючи знак); суматор порядків (разом із знаком чотири розряди). РІШЕННЯ. 1. Враховуючи, що числа задані вже в нормалізованому вигляді (після коми стоїть 1), представимо їх в машинному вигляді у форматі з рухомою крапкою (модифікований код): Ампр=00.1011.11.10; Вмпр=11.1001.11.11. 2. Переводимо мантиси чисел в обернені коди: mАоб=00.1011; mВоб=11.0110. 3. Для вирівнювання порядків чисел, а значить, і їх вагових розрядів, необхідно з’ясувати, яке із заданих чисел підлягає тимчасовій денормалізації. Для цього автоматом визначається різниця порядків чисел: Р=РА–РВ. Переведемо порядки чисел в обернені коди. РАоб=11.01 ; РВоб=11.00. Тоді, Р=РАобРВоб =11.01–11.00 Замінимо операцію віднімання на операцію складання. Р=РАобРВоб = РАоб +РВпр =11.01 + 00.11 (де РВпр інверсний код РВоб., включаючи і знакову частину). Виконаємо додавання. 11.01 +00.11 100.00 +→1 00.01 Величина Р позитивна, тому РА РВ. Треба зсувати мантису числа вправо на Р розрядів, тобто на один розряд, збільшивши одночасно порядок на 1. 4. Зсунемо мантису числа В вправо на один розряд і складемо їх значення на ДСОК. 5. Перевіримо умову нормалізації мантиси результату справа, зліва. mАоб=00.1011 (тут δ=0, γ=0) mBоб=11.0110 (тут δ=0, γ=1, необхідно зробити зсув mBобвправо) mBоб=11.1011 +mAоб=00.1011 mCоб=100.0110 →→ 1 00.0111 (тут δ=1, γ=0; необхідно зробити зсув вліво) mCоб=00.1110 і тому робимо корекцію порядку на ∆Р=–1 РАоб=11.01 +∆Роб= 11.10 (∆Р представлено в оберненому коді) 110.11 +→1 РСоб=11.00 Результат РСоб отриманий в оберненому коді, тобто знак негативний (11). Визначаємо прямий код порядку і записуємо результат Спр=00.11102-3. Відповідь: Спр=00.1110.11.11 Приклад. Скласти на ДСДК числа Апр= +5, Впр= 3, представлених в десятковій системі числення. Ад=00/5; Вд=99/7. Проведемо складання Ад+Вд=00/5+99/7=100/2=00/2 (+2(10)). Одиниця (1) пропадає, оскільки складання йде на ДСДК. |