Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
с. работа - Логика.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.16 Mб
Скачать

6.6. Перевод чисел в д-кодах

Рассмотрим перевод целых десятичных чисел, представленных в Д коде, в двоичную систему счисления.

Пусть задано десятичное число А = аn аn-1...а2 а1, где аi — десятичная цифра, которая должна быть представлена в Д- коде в виде а i = 4i а3 i а2 i а1 i).

Используя равенство 10= 8 + 2 = (23 + 21), любое десятичное целое число можно записать

A = (.. .( а4n а3 nа2 n а1 n) (23 + 21) + а4n-1 а3 n-1а2 n-1 а1 n-1) (23 + 21) +… + а42 а3 2 а2 2 а1 2) (23 + 21) +

+ а41 а3 1 а2 1 а1 1.

Умножение на 2k означает сдвиг двоичного кода на k разрядов влево. Следовательно, перевод сводится к сдвигу соответствующих тетрад и их последующему суммированию.

Пример. Задано A10 = 254 или в коде Д1 А = 00100101 0100. Найти А2.

А2 = (0010. (23-21) +0101)(23-21)+0100 = (10000+0100 +0101) (2Э + 21) + 0100 = 10. 000. 000+100. 000 + 1.00. 000 +

+ 10.010 + 0.100= 11.101.000 + 10.110= 11.111.110.

Для перевода правильных дробей можно применить следующий прием. Заданную k-разрядную десятичную дробь вначале рассматри­вают как целое число и переводят по описанному алгоритму, а затем делят на 10k, записанное двоичными символами (10 k можно перевести в двоичный код по тому же алгоритму).

Пример. Задано A10 = 0,37 или в коде Д1 А = 0,0011 0111. Найти А2

А1 = 0011 (23 + 21) + 0111 = 11110 + 0111 = 100101

В= 102= 1100100

А2 = 10010100 1100100

1100100 0,0101111010

_ 0011000000

01100100

_ 10111000

1100100

_ 10101000

1100100

_ 10001000

1100100

_ 01001000

1100100

1,1100100

Перевод чисел из двоичной системы счисления в Д- код может осуществляться разными способами, Например, делением целых дво­ичных чисел на число 1010. При этом десятичные цифры получаются последовательно одна за другой. При дробных числах эта операция видоизменяется таким образом, чтобы при умножении на число 1010 можно было получить соответствующие цифры десятичных дробей.

Пример. Задано А2 = 0,0101111010 = 0,3710. Найти двоично-десятичный код это­го числа. При определении кода каждого десятичной цифры числа умножение А на 10102 заменяем сложением А • 23 и А 21.

0010,111101000

+ 0,101111010

0011 0011,10110001000

+ 101100010

0110 0110,1110101000

+ 11101010

1001 1001,0010010.

Таким образом, А2 - 10 = 0,0011 0110 1001 = 0,36910.

Перевод из Д- кода в двоичную систему счисления и наоборот мож­но упростить следующим образом.

Пусть число А задано в коде Д1, т. е.

n 4

А = Σ pi Σ ji p j-1

-k j

обозначив через bji константы вида pji 2 j-1, получим

n 4

А = Σ Σ ji bji

-k j

Следовательно, если хранить двоичные коды констант bji в таблице, то перевод из Д- кода в двоичную систему сводится к формированию частичных произведений вида ji bji, где ji = {0, 1}, и их последую­щему суммированию.

Пример. В коде Д1 задано число А10 = 59, т. е. A2-10= 0101 1001. Найти двоичный код этого числа. Константы bji в этом случае следующи:

b10 =1; b20=210=102; b30 =410= 1002; b40 =810= 10002;

b11 =1010= 10102; b21 =2010= 101002; b31 =4010= 1010002;b41 =8010= 10100002;

Поэтому А2 = 0 • 1010000 + 1 • 101000 + 0 . 10100 + 1 • 1010 + 1• 1000+ 0• 0100 + 0 • 10+ 1• 1 = 111011.

Эти же константы bji позволяют упростить перевод числа А из дво­ичной системы счисления в Д- код. При этом вначале из числа А вычитается наибольшая константа b4n . Если разность положительна, то  4n = 1, в противном случае 4n = 0. На следующем шаге из остат­ка вычитается следующая константа b3n , а значение 3n определяется знаком нового остатка. Эта процедура повторяется до тех пор, пока не будут найдены все ji. Следует отметить, что при отрицательном, текущем остатке к нему на следующем шаге новая константа при­бавляется.

Пример. Задано А=5910=1110112. Найти представление числа А в коде Д1. В данной случае n = 1, поэтому потребуются только константы b10 — b40 и b11b41, с помощью двоичных колов которых за 8 шагов получим все восемь коэффициентов ji :

111011

1-й шаг - 1010000

- 010101 сдвиг 41 =0

2-й шаг + 101000

10011 Сдвиг 31 =1

3-й шаг - 1010

- 00001 Сдвиг 21 = 0

4-й шаг + 1010

+ 1001 Сдвиг 11 = 1

5-й шаг - 1000

+ 0001 Сдвиг 40= 1

6-й шаг - 100

- 011 Сдвиг 30 = 0

7-й шаг + 10

- 01 Сдвиг 20=0

8-й шаг + 1

  1. Сдвиг 10 = 1

Таким образом, А2 - 10 = 0101 1001.

Достоинством данного способа перевода является использование одних и тех же констант для прямого и обратного преобразований, что упрощает его аппаратурную реализацию. При этом перевод в Д- код сводится по сути дела к выполнению операции деления с пере­менным делителем, а перевод из Д- кода — к выполнению операции умножения с переменным множимым.