Щербаков а. Н., Проскурін м. П., Грушко с. С. Прикладна теорія цифрових автоматів
Скачать 2.54 Mb.
|
15.1 Алгоритм ділення без відновлення залишкуМетод ділення бінарних чисел без відновлення проміжних залишків виконується в послідовності: - визначити знак частки за формулою: SgС=SgАSgВ; - представити числа (операнди) у доповняльному коді в машинному зображенні, ділене (завжди), незалежно від його знака, береться в прямому коді з позитивним знаком, а дільник (завжди), незалежно від його знака, береться в доповняльному коді з негативним знаком; - привласнити суматору значення См:=Амдоп ; РгВ:=Bмдoп; РгС:=0; - усунути дробову частину в дільнику, переносячи кому вправо на n розрядів (за аналогією з десятковою системою числення) і, щоб дріб не змінився, у діленому також перенести вправо кому на n розрядів; - починаючи зі старших розрядів, до діленого додають дільник у доповняльному коді, що рівнозначно вирахуванню з діленого дільника й аналізують знак проміжного залишку: 1) якщо знак проміжного залишку 00 (позитивний), то в регістр частки РгС записується 1, починаючи зі старшого розряду. Залишок зсувається на один розряд вліво (знакову крапку перенести вправо на один розряд), зноситься наступний розряд діленого, що не брав участі до цього в діленні. Після цього, проміжний залишок підготовлений до наступного додатка діленого у доповняльному коді; 2) якщо знак проміжного залишку 11 (негативний), то в регістр частки РгС записується 0, починаючи зі старшого розряду. Залишок зсувається на один розряд вліво (знакову крапку перенести вправо на один розряд), зноситься наступний розряд діленого, що не брав участі до цього в діленні. Після цього, проміжний залишок підготовлений до наступного додавання до нього дільника в прямому коді зі знаком 00; - дії попереднього пункту повторюються до одержання машинного нуля або заданої точності обчислення (кількість розрядів дробу після коми цілої частини числа). Кома дробу встановлюється в частці після зносу останнього розряду цілої частини діленого. - знак результату привласнюється відповідно до пункту 1. Результат ділення представлений у регістрі частки в прямому коді. Приклад 1. Розділити на ДСДК числа (ФФЗ): А=16,25(10); В=3,25(10) Рішення: виконуємо ділення методом без відновлення залишку. - визначаємо знак частки С: Sg0С=0 1=1. У старші розряди регістра частки С заносимо значення негативного знака 11/; - встановлюємо регістри РгА, РгВ і См у нульовий стан, очистивши їх від попередньої інформації; - переводимо десяткові числа в бінарні, прямі і доповняльні коди (п.15.1): Апр=00\10000,01 (+16,25); Впр=11\11,01 (3,25); Вмдоп=11\00,11; Впр.від.=00\11,01. Для вирахування використаємо Вмдоп=11\00,11. Для дільника в прямому коді зі знаком «+» беремо Вмпр=00\11,01. (Щоб провести ділення з операндами А і В, як з цілими числами, перенесемо зап`яту на два розряди вліво в А і В). Для порівняння кількості кроків при виконанні операції ділення проведіть самостійно операцію ділення на ДСДК вказаних чисел А= +16,25(10) і В= 3,25(10) за алгоритмом без відновлення залишку. Р ішення наведене по алгоритму без відновленням залишку. 15.2 Ділення чисел з рухомою комоюПри діленні чисел представлених у ФРК, ділення виконують над мантиссою mС=mА/mВ, а порядки віднімаються: РС=РАРB(15.2) При цьому можливі два випадки: - мантиса |mА|≥ |mB|; - мантиса |mА|<|mB|. Розподіл мантис виробляється в такому ж порядку, як і у форматі з фіксованою комою. При цьому, використаються методи з відновленням і без відновлення залишку. Результату привласнюється порядок РС. Примітка. В алгоритмах ділення застосовується правило: на першому кроці підготовки операндів А і В до ділення робиться так, щоб А завжди було менше В (тимчасово змінюючи вимогу нормалізації операнда А і, відповідно, корегуючи значення порядка Р на +1) для того, щоб при першому кроці операції ділення не було переповнення молодшого знакового розряду Sg2: порівняйте дії над нормалізованими двійковими операндами, наданими у ФРК: А=+0,101.2+1 і В=+0,101.2+1: а) ділене Ампр=00\,1010\00\01\; дільник Вмпр= 00\,1010\00\01; частка Смпр=01\,0000\00\00\ отримали ненормоване число і переповнення знакового розряду (тоді, згідно вимог і δ, треба робити зсув на першому же кроці алгоритму ділення, що затримує процес у часі); б) ділене Ампр=00\,0101\00\10\; дільник Вмпр=00\,1010\00\01\; частка Смпр= 00\,1000\00\01\отримали нормоване число С автоматично без переповнення знакового розряду Sg2, бо вибраноА<В, (ф-ла 15.2). |