Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БЕКИН_Д_ЖЕНАТОВ.doc
Скачиваний:
35
Добавлен:
24.08.2019
Размер:
4.5 Mб
Скачать

7.8. Умножение модулей двоично-десятичных чисел

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

Алгоритм умножения:

1. Сумма частичных произведений полагается равной нулю.

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

3. Сумма частичных произведений сдвигается на одну тетраду и по­вто­ряются действия, указанные в пункте 2, пока все цифры (тетрады) множителя не будут обработаны. Направление сдвига зависит от того, какой вариант перемножения выбран - "старшие разряды вперед" или "младшие разряды вперед".

4. Каждая операция суммирования завершается десятичной коррекцией, соответствующей случаю суммирования двоично-десятичных чисел без избытка 6 (т.е. необходимо добавить 0110 к тем терадам, из которых был перенос или в которых =1).

Пример 7.12. Z = X * Y = 25(10) * 13(10) = 325(10)

=25(10)= 0010 0101(2-10); =13(10)= 0001 0011(2-10)

Для решения примера выберем вариант перемножения "старшие разряды вперед". В соответствии с пунктом 1 алгоритма, полагаем сумму частичных произведений P0=0. (Частичные произведения будем обозначать Pi).

Формирование второго частичного произведения более длительная операция, поскольку вторая анализируемая тетрада содержит 3(10). Поэтому каждая операция суммирования требует проверки необходимости коррекции. Вычислим P2, последовательно суммируя слагаемые, образующие P2.

Таким образом, второе частичное произведение, состоящее из трех слагаемых, имеет вид:

= 0111 0101.

Теперь можно вычислить сумму первого и второго частичного произведений, т.е. результат.

Окончательный результат: = 0011 0010 0101(2-10) = 325(10).

Следует отметить, что в данном случае при суммировании операндов не возникало переносов. Поэтому коррекция осуществлялась только по признаку =1.

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

8. Код грея

Во многих практических приложениях, например при аналого-цифровом преобразовании данных, желательно пользоваться кодами, в которых все последовательные кодовые наборы отличаются друг от друга лишь одним разрядом (число несовпадающих разрядов между двумя кодами называют расстоянием Хэмминга). Коды, когда расстояние Хэмминга между последовательными кодовыми наборами равно единице, называют циклическими. Особенно важным среди циклических кодов является код Грея, называемый также рефлексным (отражённым) двоичным кодом. Его преимущество заключается в простоте перехода к двоичной системе и обратно. Этот код строится из двоичных цифр таким образом, что соседние числа в нём отличаются всегда только в одном разряде. Кодов с такой же характеристикой много, но для кода Грея имеется простой алгоритм перевода чисел в двоичный позиционный код и обратно.

8.1. Строение кода Грея

Код Грея - непозиционный код с одним набором символов (0 и 1) для каждого разряда. Таким образом, в отличие от римской системы счисления число в коде Грея не является суммой цифр.

Пусть - кодовый набор в коде Грея с ( ) разрядами, а - соответствующее двоичное число, где индексы 0 и обозначают младший и старший разряды соответственно. Тогда разряд можно выразить через соответствующее двоичное число следующим образом:

, , , (7.1)

где - следующий старший разряд после , - символ операции сложения по модулю два:

0 0=0, 0 1=1, 1 0=1, 1 1=0.

Пример 8.1. 1110010(2)= 1001011(г).

Для перехода от кода Грея к двоичному коду следует просмотреть его, начиная с крайнего левого разряда, и положить , если число единиц, предшествующих , четно и , если это число нечетно, ~ - инверсия (отрицание, дополнение ). Отметим, что нулевое число единиц также считается четным. Например: 111011(г)= 101101(2).

Код Грея относится к классу так называемых рефлексивных (отраженных) кодов. Термин "рефлексивный" используется для обозначения кодов, обладающих таким свойством, что для построения n-разрядного кода следует найти отображение (n-1)-разрядного кода, где Д - двоичный код, Г - код Грея (таблица 8.1.).

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

Таблица 8.1.

Д

Г

Г

Г

00

00

0 00

0 000

01

01

0 01

0 001

10

11

0 11

0 011

11

10

0 10

0 010

100

1 10

0 110

101

1 11

0 111

110

1 01

0 101

111

1 00

0 100

1000

1 100

1001

1 101

1111

1 000