|
5.7. Перевод чисел из Д-кода в двоичный и из двоичного в Д-кодПусть задано 4-х разрядное число в коде Д1 A = a4a3a2a1, каждая десятичная цифра которого должна быть представлена в виде
ai = {4 3 2 1 }i . В данном случае i = 1, 2, 3, 4. Как нам уже известно, изображение числа А можно представить в следующем виде:A = a4103 + a3102 + a2101 + a1100 ,
Как видно из этой формулы, при переводе из кода Д1 в двоичный код каждый i-тый разряд кода Д1 надо умножать на 10I-1 , т.е.
a11 , a210 , a3100 , a41000 .
В то же время 10 = 8 + 2 = 23 + 21 , значит
a1 = {4 3 2 1 }1
a2 = {4 3 2 1 }2 (23 + 21)
a3 = {4 3 2 1 }3 (23 + 21) (23 + 21)
a4 = {4 3 2 1 }4 (23 + 21) (23 + 21) (23 + 21)Таким образом, первая тетрада не умножается. Вторая тетрада сдвигается на 3 разряда влево и сохраняется, затем эта же тетрада сдвигается на 1 разряд влево и добавляется к сохраненной и опять сохраняется. Далее с третьей тетрадой выполняются те же процедуры, но последовательно 2 раза, а с четвертой - 3 раза. Все полученные результаты потетрадно складываются и получается число в двоичном коде.
Например, переведем 2510 = 0010 0101 в двоичную систему счисления. Вторую тетраду (0010) сдвигаем на 3 разряда влево, получаем 0001 0000. Эту же тетраду сдвигаем на 1 разряд влево и складываем с полученной:0001 0000
+0000 0100
0001 0100
+0000 0101 (первая тетрада)
0001 1001 = 2510Перевод из двоичной системы в код Д1 может осуществляться разными способами. В частности, для ряда последовательных операций над двоичным изображением числа может быть использована процедура деления на
10102= 1010 целых двоичных чисел. Десятичные цифры получаются последовательно одна за другой, начиная со старшего десятичного разряда. При дробных числах эта операция видоизменяется таким образом, чтобы при умножении на число 1010 можно было получить соответствующие цифры десятичных дробей.
Есть более простой способ перевода - это сдвиг влево двоичного числа столько раз, сколько разрядов в двоичном числе. Необходимо предусмотреть коррекцию в тех тетрадах, значение которых превысит 1010, или произойдет потетрадный перенос.
Например, 1100012 = 4910 переведем в код Д1.
110001
1) Сдвиг 1 10001
2) Сдвиг 1 1 0001
3) Сдвиг 1 1 0 001
4) Сдвиг и коррекция +0110 1 0 1 1 0 1 0 0 01
Рез.-т после корр. 1 0 0 1 0 01
5) Сдвиг 1 0 0 1 0 0 1
6) Сдвиг 1 0 0 1 0 0 1Ответ 0100 1001D = 4910.
Алгоритмы перевода чисел из двоичной системы счисления в Д-код и обратно могут быть реализованы схемными или программными способами.
E-mail: info@telesys.ru