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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

3. Формирование очередного остатка. Ai+1=Ai∙2+[-Дт]доп если Ai+1<0, то в очередной разряд частного справа от запятой записывается ноль (Чт(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) – что является признаком переполнение и ос4уществляется переход к пункту 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

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

Методы ускорения деления

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

При этом Дт выбирается (формируется) таким образом, чтобы после запятой шла единица, то есть он нормализован. Если очередной остаток получился настолько мал, что после запятой следует r+1 нулей, то в частное может быть записано r ”0” или ”1”, а остаток может быть сдвинут на r разрядов влево.

Итак, для осуществления названных методов ускорения кроме устройства управления делением требуется логическая схема, осуществляющая две функции:

1) сдвиг модулей делителя и делимого до тех пор, пока у модуля делителя после запятой не останется ни одного нуля;

2) выявление остатков вида 0,0…01 или 1,1…10.

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

Обычно реализация логических методов ускорения при делении несколько сложнее, чем при умножении. При делении необходимо либо каждый остаток переводить в прямой код, либо, если остаток оставить в дополнительном коде, анализировать два разряда одновременно 0,0… или 1,1….

 

Двоично-десятичные коды

Пусть число A представлено в системе счисления с основанием r:

Цифры ai будем представлять двоичными разрядами d1,d2,…,dm. Каждому двоичному разряду припишем веса p1,p2,…,pm. Тогда каждый разряд ai числа A будет иметь вид , а все число

, (4)

где n и m определяют общее число двоичных разрядов.

Если каждый разряд числа имеет вес и при r≠2k не выполняется равенство pk=r ∙ pk-1, то системы принято называть взвешенными. Количество разрядов m должно удовлетворять выражению m ≥ log2r. Если десятичное число записано в виде (4), то будем говорить, что число представлено в двоично-десятичном коде. Наибольшее распространение из них получили коды, в которых десятичная цифра представляется двоичной тетрадой (BCD-коды). Существует множество способов кодирования десятичных цифр. Существенным при этом является простота представления инверсных кодов и простота выделения (формирования) сигнала переноса из цифры в цифру.

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

§ Четность, состоит в том, что четным десятичным цифрам соответствуют только четные двоичные коды и наоборот. Это обеспечивает эффективность операций округления, умножения и деления чисел в BCD-кодах.

§ Дополняемость, заключается в том, что сумма двоичного кода и инверсного ему кода любой десятичной цифры должна быть равна 9. Это обеспечивает эффективность операции алгебраического сложения в BCD-кодах.

§ Упорядоченность, то есть большей десятичной цифре соответствует большая тетрада и наоборот.

§ Единственность представления десятичной цифры двоичной тетрадой.

§ Взвешенность, то есть каждому разряду двоичного представления десятичной цифры поставлен в соответствие вес. Это обеспечивает эффективность всех арифметических и логических операций в BCD-кодах.

Если каждая десятичная цифра кодируется соответствующим двоичным эквивалентом, то такое кодирование называется кодом прямого замещения.

BCD-код – код, взаимодополняемый до 15. Это создает некоторые неудобства при суммировании чисел - ввод поправки в некоторых случаях. В то же время этот код имеет одно существенное достоинство – аддитивность: сумма кодов равна коду суммы.

0011 код 3

0101 код 5

1000 код 8

Основной недостаток этого кода заключается в том, что инверсия какой- либо цифры оказывается цифрой, дополняющей данную цифру до 15, а не до 9.

a = 0100

a = 1011 11, то а + а = 1111 = 15

В табл. 4 показаны различные способы кодирования десятичных цифр.

Таблица 4

Десятичные цифры Эквивалент в коде
        8421+3 3а+2 2 из 5
               
               
               
               
               
               
               
               
               
               

 



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 369; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.153.38 (0.014 с.)