Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л_8.DOC
Скачиваний:
0
Добавлен:
15.04.2019
Размер:
64 Кб
Скачать

1.4 Деление чисел

Известны несколько алгоритмов деления чисел, применяемых в ЭВМ, например, деление без восстановления остатка, деление с восстановлением остатка и др. Остановимся на одном из них – алгоритме деления без восстановления остатка. Этот алгоритм может быть применен при условии, если модуль делимого меньше модуля делителя (то есть, результат деления должен представлять собой правильную дробь). Если же данное условие не выполняется, то используют масштабирующие множители.

Рассмотрим алгоритм. Предположим, что необходимо разделить число А на число В. Тогда:

1. Проверить выполнение условия А < В. Если условие выполняется, то перейти на следующий пункт, если нет – то ввести масштабирующий коэффициент, а затем перейти на следующий пункт.

2. Получить прямые коды делимого и делителя, а также дополнительный код делителя. При этом независимо от того, положительным или отрицательным числом является делитель, его прямой код должен быть записан как для положительного числа (в знаковом разряде нужно записать «0»), а дополнительный – как для отрицательного (в знаковом разряде нужно записать «1»).

3. Определить знак частного, применив операцию сложения по модулю «2» к цифрам в знаковых разрядах прямых кодов делимого и делителя.

4. Удвоить делимое (удвоение двоичного числа эквивалентно сдвигу его влево на один разряд). Вычесть из удвоенного делимого делитель (то есть прибавить его в дополнительном коде).

5. Определить знак первого промежуточного результата (1). Если он положительный (1 > 0), то записать в первый разряд результата после запятой «1», а если отрицательный (1 < 0) – то записать «0».

Удвоить первый промежуточный результат. Если он был положительным, то вычесть из удвоенного первого промежуточного результата делитель, а если он был отрицательным, то прибавить к удвоенному первому промежуточному результату делитель.

6. Определить знак второго промежуточного результата (2). Если он положительный (2 > 0), то записать во второй разряд результата после запятой «1», а если отрицательный (2 < 0) – то записать «0».

Удвоить второй промежуточный результат. Если он был положительным, то вычесть из удвоенного второго промежуточного результата делитель, а если он был отрицательным, то прибавить к удвоенному второму промежуточному результату делитель.

И так далее …

Алгоритм выполняется до тех пор, пока очередной промежуточный результат не станет равным нулю, либо пока не будет достигнута требуемая точность результата.

7. Записать результат деления в двоичной форме с учетом знака (результат будет представлен в прямом коде). Перевести результат из двоичной системы счисления в десятеричную, учесть масштабирующий множитель.

Пример: Разделить число А = -7 на число В = 1,2.

Решение.

Поскольку А > В, умножим делитель на 10. Тогда В = 12.

А(2) = - 111; [А]ПК = 1.111;

В(2) = 1100; [В]ПК = 0.1100; [В]ДК = 1.0100.

Определим знак частного

1  0 = 1.

Выполним деление.

Выровняем число разрядов делимого и делителя, для чего добавим в старший разряд делимого один нуль [А]ПК = 1.0111.

1.0111

х 2

0.1110

+

1.0100

0.0010 1 > 0 (1)

0.0100 21

+

1.0100

1.1000 2 < 0 (0)

1.0000 22

+

0.1100

1.1100 3 < 0 (0)

1.1000 23

+

0.1100

0.0100 3 > 0 (1)

и т.д. до получения требуемой точности результата.

Результат деления:[А : 10В]ПК = 1.1001; (А : 10В) = - 0,1001(2) = - 0,5625(10).

Окончательно имеем: А : В  - 5,625.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]