Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебное пособие по А и ЛО ВТ.doc
Скачиваний:
123
Добавлен:
24.02.2016
Размер:
4.95 Mб
Скачать

Деление чисел в прямых кодах.

Алгоритм деления с восстановлением остаткасостоит в следующем.

1. Выполняется пробное вычитание с формированием первого остатка A1=[Дм]доп+[-Дм]доп. Далее, если А1< 0, то в первый разряд, расположенный слева от запятой заносится ноль (0, ), иначе единица (1, ) – переполнение и переход к пункту 5.

2. Если Аi< 0, то восстанавливаем предыдущий остаток Ai=Ai+[Дм]доп.

3. Формирование очередного остатка. Ai+1=Ai∙2+[-Дм]доп, то в очередной разряд частного справа от запятой записывается ноль (Чт(n)=0), иначе записывается единица (Чт(n)=1).

4. Если достигнута заданная точность частного или получен нулевой остаток Ai+1, то процесс деления окончен и переход к пункту 5, иначе переходим к пункту 2 алгоритма.

5. Окончание алгоритма.

Из рассмотренного алгоритма видно, что:

1) необходимо затрачивать время на восстановление остатка;

2) процесс деления не регулярный, в зависимости от делимого и делителя

частное будет содержать нулей больше или меньше, и чем больше нулей, тем больше требуется времени на восстановление остатков.

Как видно из примера, для получения остатка Аi+2необходимо выполнить

Аi+2= ( Ai+1 + ДT) ∙ 21- ДT= Ai+1∙ 21+ 2ДT- ДT= Ai+1∙ 21+ ДT.

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

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

1. Выполняется пробное вычитание с формированием первого остатка A1=[Дм]доп+[-Дм]доп. Далее, если А1< 0, то в первый разряд, расположенный слева от запятой заносится ноль (0, ), иначе единица (1, ) – переполнение и переход к пункту 5.

2. Формирование очередного остатка. Если Аi< 0, то Ai+1=Ai∙2+[Дм]доп, иначеAi+1=Ai∙2+[-Дм]доп.

3. Если Аi+1< 0, то в очередной разряд частного справа от запятой записывается ноль (Чт(n)=0), иначе записывается единица (Чт(n)=1).

4. Если достигнута заданная точность частого или получен нулевой остаток Ai+1, то процесс деления окончен и переход к пункту 5, иначе переходим к пункту 2 алгоритма.

5. Окончание алгоритма.

Деление чисел в дополнительных кодах.

При делении чисел знаковая и значащая части частного формируются раздельно. Знак частного формируется согласно формулы:

Знак Чт = Знак Дм  Знак Дт.

Основой деления чисел в дополнительных кодах является деление без восстановления остатка. В отличие от деления в прямых кодах, здесь как для определения цифры частного, так и для определения действия сравнивается знак делимого (остатка) со знаком делителя.

Ниже приведен алгоритм деления чисел в дополнительных кодах.

1. Выполняется пробное вычитание: если знак Дм знаку Дт, то первый остатокA1=[Дм]доп+[Дм]доп,иначеA1=[Дм]доп+[-Дм]доп. Далее формируется первый разряд, расположенный слева от запятой - ноль (0, ) если знак А1знаку Дт, иначе единица (1, ).

2. Формирование очередного остатка. Если знак Аiзнаку Дт, то Ai+1=Ai∙2+[Дм]доп, иначеAi+1=Ai∙2+[-Дм]доп.

3. Если знак Аi+1знаку Дт, то в очередной разряд частного справа от запятой заносится ноль (Чт(n)=0), иначе единица (Чт(n)=1).

4. Если достигнута заданная точность частого или получен нулевой остаток Ai+1, то процесс деления окончен, иначе переходим к пункту 2 алгоритма.

Пример: Дм = - 0.1011 [ Дм ]доп = 1.0101

Дт = 0.1101 [ Дт ]доп = 0.1101 [-Дт ]доп = 1.0011

На деление Дм и Дтпридут в дополнительном коде