Розподіл двійкових чисел

РОЗПОДІЛ двоцифрових чисел

Якщо множення виконується шляхом багаторазових зрушень і додавань, то розподіл, будучи операцією зворотного множенню, - шляхом багаторазових зрушень і вирахувань.

(ПРАВИЛЬНІ ДРОБІ, БЕЗ ЦІЛОГО.)

При поданні чисел з фіксованою комою розподіл можливо, якщо ділене по модулю менше дільника, в іншому випадку відбудеться переповнення розрядної сітки.

Так само, як і при «ручному» розподілі, розряди приватного при діленні чисел на машині визначаються (починаючи зі старшого) шляхом послідовного вирахування дільника з залишку, отриманого від попереднього вирахування. Однак тут операція віднімання замінюється операцією додавання залишку з негативним дільником, представленим в зворотному або додатковому коді. Знак приватного визначається складанням по модулю два кодів знаків діленого і дільника.

Розглянемо спочатку приклад поділу «ручним» способом.

Розподіл двійкових чисел

Тут після кожного вирахування дільник зсувається вправо по відношенню до делимому. Якщо залишок після вирахування вийшов позитивний, в розряд приватного записується 1, якщо негативний - нуль. На практиці зазвичай негативний залишок не записується, просто дільник зсувається додатково на один розряд вправо і віднімається з позитивного залишку.

В машинах замість зсуву дільника вправо здійснюється зрушення залишку вліво, що, по суті, нічого не змінює.

При розподілі з відновленням залишку негативний залишок відновлюється підсумовуванням з позитивним дільником. Відновлений залишок зсувається вліво на один розряд. З зрушеного залишку знову віднімається дільник. За знаком отриманого залишку визначається цифра чергового розряду приватного. Процес поділу триває до отримання заданого числа цифр приватного, що забезпечує необхідну точність результату.

Подивимося, як вирішується попередній приклад на машині.

Процес поділу починається зі зсуву діленого вліво на один розряд, після чого до нього додається дільник, представлений, наприклад, в додатковому модифікованому коді:

Розподіл двійкових чисел

Очевидно, що при розподілі з відновленням залишку в найсприятливішому випадку для формування кожного розряду приватного потрібно виконати дві операції: віднімання (додавання в додатковому або зворотному коді) і складання (відновлення залишку). Тобто час виконання операції ділення може виявитися в два рази більше в порівнянні з мінімально можливим.

Для скорочення середнього часу виконання операції ділення реалізують розподіл без відновлення залишку, алгоритм якого наступний.

1) Визначити знак приватного підсумовуванням за модулем два умістів знакових розрядів діленого і дільника.

2) З діленого відняти дільник. Якщо залишок негативний, перейти до пункту 3. В іншому випадку обчислення закінчити (сталося переповнення).

3) Запам'ятати знак залишку.

4) Зрушити залишок на один розряд вліво.

5) Присвоїти делителю знак, зворотний знаку залишку, запам'ятовуваному в п. 2.

6) Скласти зрушений залишок і дільник (з урахуванням знака).

7) Присвоїти цифрі приватного значення, протилежне коду знака залишку.

8) Повторювати виконання пунктів 3-7 до тих пір, поки не буде забезпечена необхідна точність обчислення приватного.

Рішення розглянутого вище прикладу в даному випадку здійснюється за наступною схемою:

Розподіл двійкових чисел

З плаваючою комою

При виконанні операції ділення над числами з плаваючою комою мантиса приватного визначається як результат ділення мантиси діленого на мантиссу подільника, а порядок приватного в результаті віднімання коду порядку дільника з коду порядку діленого, так як

Розподіл цілих ненульових n-розрядних (не рахуючи знакових розрядів) чисел А: В, представлених в прямому (для простоти) коді, призводить до отримання цілого приватного С і цілого залишку 0, якому присвоюється знак діленого; знак приватного обчислюється як сума по модулю два операндів А і В.

Розподіл виконується в наступній послідовності.

1) Дільник У зсувається вліво (нормалізується), так щоб в старшому інформаційному розряді виявилася 1; підраховується кількість зрушень S; частка від ділення може бути не більше (S + 1) розрядів, які не рівних нулю.

2) Виконується (S + 1) цикл ділення модулів | А | на IB'l де В '- нормалізоване В, в результаті знаходиться (S + 1) розряд приватного, починаючи зі старшого з (S + 1) молодших.

3) Отриманий в останньому циклі ділення залишок Rs + 1, якщо він позитивний, зсувається вправо на S розрядів; якщо ж Rs + 1 <0 (отрицательный), то остаток восстанавливается: к нему добавляется |В'|, т. е.[Rs+1]вост = Rs+1+|B'|. После этого выполняется сдвиг вправо на S разрядов. В результате получается целый остаток от деления.

Приватному і залишку присвоюються знаки.

Розподіл двійкових чисел