Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Алгоритм деления без восстановления остатков



Для исключения недостатков предыдущего алгоритма был предложен алгоритм деления без восстановления остатков, основанный на простейших преобразованиях приведенных ранее формул (1) и(2).

В I способе деления после упрощения второй строки формулы (1) получим:

(3)

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

Во II способе деления после упрощения второй строки формулы (2) получим:

(4)

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

Это позволяет сформулировать алгоритм делениябез восстановления остатков для дробных чисел с фиксированной запятой (ФЗ):

1. Определить знак частного сложением по модулю два знаковых разрядов делимого и делителя. Далее использовать модули операндов.

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

3. Проанализировать знак остатка после первого вычитания:

- если остаток положительный, произошло ПРС, операцию следует прекратить для смены масштабов операндов;

- если остаток отрицательный, в частное занести «0» и продолжить операцию деления.

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

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

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

7. Выполнить пункты 4-6 алгоритма (n+1) раз, причем, последний сдвиг частного не выполнять, так как (n+1) разряд формируется для округления.

8. Выполнить округление результата и присвоить частному знак из первого пункта алгоритма.

Пример 10. Числа А=-12(10) и В=-18(10) представить в форме с ФЗ в прямом коде (МА,В=25) и разделить, используя алгоритм без восстановления остатков,I способ деления и ОК при вычитании.

А=1,01100 – делимое; В=1,10010 – делитель.

1. Знак частного: 1Å1=0.

2. Деление модулей операндов выполняется I способом.

  Частное   Делимое (остатки) Пояснения
0,00000 0,01100 1,01101 Вычитание
  0,00000 1,11001 1,10011 0,10010 Первый остаток<0 Сдвиги Сложение
  10,00101  
  0,00001   0,00110 0,01100 1,01101 Второй остаток>0 Сдвиги Вычитание
  0,00010 1,11001 1,10011 0,10010 Третий остаток<0 Сдвиги Сложение
  10,00101  
  0,00101 0,00110 0,01100 1,01101 Четвертый остаток>0 Сдвиги Вычитание
  0,01010 1,11001 1,10011 0,10010 Пятый остаток<0 Сдвиги Сложение
  10,00101  
0,10101 0,00110 0,01100 1,01101 Шестой остаток>0 Сдвиги Вычитание
0,10101(0) 1,11001 Седьмой остаток

3. Модуль частного после округления:

А/В=0,10101.

Проверка: А/В= 0,10101(2)=0,656(10). Точный результат: (12/18)=0,667; относительная погрешность =1,65%.

 

Замечание. Следует обратить внимание на особенности использования ОК при вычитании: при сдвиге отрицательных чиселкак влево, так и вправо освобождающиеся разряды заполняются «1». Кроме того, в соответствии с правилами сложения чисел в ОК при возникновении единицы переноса из знакового разряда её следует прибавлять к младшему разряду числа.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.