Щербаков а. Н., Проскурін м. П., Грушко с. С. Прикладна теорія цифрових автоматів
Скачать 2.54 Mb.
|
14.2 Ділення чисел з фіксованою комою з відновленням залишкуДілення виконується за алгоритмом із відновленням залишку на суматорі доповняльного коду (ДСДК) у наступній послідовності: - визначається знак частки по формулі SgС=SgАSgВ; - проводиться подання діленого і дільника в машинних кодах, коли ділене завжди, незалежно від його знака, береться в прямому коді з позитивним знаком, а дільник завжди, незалежно від його знака, береться у доповняльному коді з негативним знаком; - усунення дробової частини в дільнику, шляхом переносу коми вправо на n розрядів (за аналогією з десятковою системою числення). Щоб дріб не змінився, у діленому також переносять вправо кому на n розрядів; - починаючи зі старших розрядів, до діленого додають дільник у доповняльному коді, що рівнозначно вирахуванню з діленого дільника й аналізують знак проміжного залишку: 1) якщо знак проміжного залишку 00 (позитивний), то в регістр частки РгС записується 1, починаючи зі старшого розряду. Залишок зсувається на один розряд вліво (просто знакову крапку перенести вправо на один розряд), зноситься наступний розряд діленого (що не брав участь до цього в ділені). Після цього, проміжний залишок підготовлений до наступного додатка діленого у доповняльному коді; 2) якщо знак проміжного залишку 11 (негативний), то в регістр частки РгС записується 0, починаючи зі старшого розряду. Залишок відновлюється шляхом додатка до нього дільника в прямому коді з позитивним знаком. Відновлений залишок зсувається вліво на один розряд (крапку, що відокремлює знак, перенести вправо на один розряд), зноситься наступний розряд діленого (що не брав участь до цього в ділені). Після цього, проміжний залишок підготовлений до наступного додатка дільника у доповняльному коді; - дії попередніх пунктів повторюються до одержання машинного нуля або заданої точності обчислення (кількість розрядів дробу після коми за цілою частиною числа). Кома дробу встановлюється в частці С після зносу останнього розряду цілої частини діленого. - результат ділення представлений у регістрі частки С в прямому коді. Знак результату привласнюється відповідно до пункту 1. Приклад. Розділити число А= 100111(39) на В= 11(3), представлених у (ФФЗ) . Розрядність суматора і регістрів дорівнює 6. Рішення: Операція робиться на ДСДК (модифікований код) за алгоритмом із відновленням залишку. 1. Визначаємо знак частки: SgС=SgАSgВ =11=0. Знак позитивний. 2. Записуємо машинні зображення чисел: Ампр=00/100111; Вмпр=11/11; Вмдоп=11/01; 3. Виконуємо послідовність дій над числами за методом алгоритму з відновленням залишку (таблиця 14.1). Примітка: ДСДК не використовує перенос ПSg1 при переповненні суматора старшого розряду знака (див. рис. 8.1). Відповідь: Спр=11/01101 (13). У таблиці 14.1 вертикальними стрілками показані знесення наступних розрядів діленого в проміжні залишки. Горизонтальні стрілки відображають розряди запису результату в регістр частки РгС. Одиниці переповнення, що одержані після підсумовування, пропадають, тому що використається ДСДК. При виконанні операції лівого зсуву залишків, переноситься вправо крапка, що відокремлює знак числа( при цьому, старший розряд знакасуматораSg пропадає). Таблиця 14.1 Приклад ділення чисел А на В з відновленням залишку Відповідь: Спр=11/01101 (13). 15 ДІЛЕННЯ ЧИСЕЛ З ФІКСОВАНОЮ КОМОЮ БЕЗ ВІДНОВЛЕННЯ ЗАЛИШКУАналізуючи попередній алгоритм, бачимо, що у випадку, коли Ci чергова цифра частки дорівнює "0", то проводиться відновлення залишку по формулі Ai-1 = Ai + В2-i(на і-му кроці алгоритм ділення Ai= Ai-1 В2-i, де Ai-1 попередній залишок, Ai поточний залишок). Відновлений залишок приймається за A’i і процес ділення триває, тобто: Аi+1=А’i B2-(i+1) =(Ai+В2-i)B2-(i+1) Перетворюючи цей вираз, одержимо: Aі+1=Ai+B2-(i+ 1) . (15.1) З формули 15.1 витікає, що відновлювати залишок немає необхідності. Це дає можливість одержати інший метод ділення бінарних чисел, що і розглядається далі. |