Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика учебное пособие часть 1.doc
Скачиваний:
29
Добавлен:
16.09.2019
Размер:
882.18 Кб
Скачать

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

В двоично-десятичных кодах каждая цифра десятичного числа заменяется некоторым двоичным кодом, q двоичными разрядами с весами p1, … pq.

При S = 10 минимальное число двоичных разрядов, с помощью которых можно закодировать все десятичные цифры равно 4.

Число двоичных тетрад – 16, а число цифр – 10, следовательно, возможно неоднозначное соответствие тетрад цифрам (варианты кодирования).

Общее число способов кодирования, учитывая и абсолютно бессмысленные, равно 29 млрд. Следовательно, необходимо отобрать лишь те способы кодирования, которые являются удобными для использования в ЭВМ.

Требования, которым должны удовлетворять двоично-десятичные коды при намерении использовать двоично-десятичную систему в вычислительной технике, были сформулированы Рутисхаузером:

единственность – каждой десятичной цифре должна взаимно однозначно сопоставляться некоторая двоичная тетрада;

упорядоченность – большим десятичным цифрам должны соответствовать большие тетрады;

четность – четным десятичным цифрам соответствует четная тетрада, а нечетным – нечетная;

дополнительность – если цифры ai и aj являются десятичными дополнениями (2 и 7, 3 и 6 и т.п.), то соответствующие им тетрады должны быть инверсиями друг друга;

весомозначность – должна существовать такая четверка целых чисел p1, p2, p3, p4, называемая весами, что для любой цифры ai десятичной системы выполняется следующее:

если m4, m3, m2, m1 есть соответствующая цифре тетрада, то

ai = m1p1 + m2p2 + m3p3 + m4p4

Рассмотрим некоторые варианты двоично-десятичных кодов.

5.7.1 Код (8421) – код прямого замещения

В этом коде каждая десятичная цифра заменяется двоичным эквивалентом, записанным в 4-х разрядах.

Например, представим в коде (8421) следующие десятичные числа:

136(10) 0001 0011 0110 259(10) 0010 0101 1001

487(10) 0100 1000 0111 709(10) 0111 0000 1001

Код прямого замещения (КПЗ) удовлетворяет всем требованиям Рутисхаузера, кроме требования дополнительности.

Правило сложения в коде (8421) имеет вид (теоретическое обоснование правил не рассматривается):

1. выполнить по-тетрадное суммирование по правилам двоичного сложения с передачей переноса между тетрадами;

2. в те тетрады, где произошло десятичное переполнение, необходимо добавить поправку (+6) – 0110.

Пример 12. Найти сумму чисел

а) 1052(10)+2697(10)

1052 0001 0000 0101 0010

2697 0010 0110 1001 0111

3749 0011 0110 1110 1001

0110

0011 0111 0100 1001

3 7 4 9

Ответ: 1052(10)+2697(10) = 3749(10)

б) 579(10)+6023(10)

579 0000 0101 0111 1001

6023 0110 0000 0010 0011

6602 0110 0101 1001 1100

0110

0110 0101 1010 0010

0110____

0110 0110 0000 0010

6 6 0 2

Ответ: 579(10)+6023(10) = 6602(10).

Из-за того, что код (8421) не удовлетворяет принципу дополнительности, операция вычитания выполняется по усложненным правилам и в данном пособии рассматриваться не будет.

5.7.2 Код с избытком (+3)

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

Код с избытком (+3) получается из кода прямого замещения путем добавления к каждой тетраде постоянного избытка (+3).

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

123(10) 0001 0010 0011 (КП3)

0100 0101 0110 (+3);

658(10) 0110 0101 1000 (КПЗ)

1001 1000 1011 (+3);

479(10) 0111 1010 1100 (+3).

Код с избытком (+3) удовлетворяет требованиям четности, единственности, упорядоченности, дополнительности.

Правила сложения в коде с избытком (+3) (теоретическое обоснование правил не рассматривается):

1. поправка (+3) добавляется в те тетрады, откуда при первоначальном суммировании был перенос и поправка (+12) – откуда переноса не было;

2. перенос, возникающий из тетрады при внесении поправок, учитывается в младшем разряде этой же тетрады;

3. для представления отрицательных чисел используется обратный код.

Пример 13. Найти сумму чисел.

а) 402(10) +79(10)

402 0111 0011 0101

79 0011 1010 1100

481 1010 1110 0001

1100 1100 0011 / поправки

0110 1010 0100

1 1 / перенос из- за поправок

0111 1011 0100

4 8 1

Ответ: 402(10) +79(10) = 481(10).

б) 402(10) 79(10)

402 0111 0011 0101

79 1100 0101 0011

323 0011 1000 1000

1 / перенос при сложении в ОК

0011 1000 1001

0011 1100 1100 / внесение поправок

0110 0100 0101

1 1 / перенос из-за поправок

0110 0101 0110

3 2 3

Ответ: 402(10) 79(10) = 323(10).

Еще раз повторим и обобщим сказанное в данной главе:

1. в компьютере арифметические устройства выполняют действия не с самими двоичными числами по правилам двоичной арифметики, а с их двоичными кодами (представлениями) по правилам арифметики двоичных кодов;

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

По этой же причине отличаются понятия «ноль» и «машинный ноль», «бесконечность» - «максимальное число», а также становится возможной ситуация переполнения, что требует ее постоянного отслеживания;

3. применение при вычислениях формы представления чисел с плавающей запятой обеспечивает единообразие при их записи и обработке, и, что важно, в результате автоматического масштабирования числа на каждом этапе его обработки сокращается погрешность вычислений;

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

Контрольные задания.

1. Перевести число 137 в 8-ричную, 6-ричную и двоичную систему счисления.

2. Перевести 0.715(10) в 2-ную, 3-ную, 5-ричную системы счисления.

3. Перевести 103.65(7), 11101.101(2), 216.52(8) в десятичную систему счисления.

4. Определить, какое число больше:

FD5(16) или 8419(10); 22(8) или 44(5); 11011011101(2) или 51(6).

5. Перевести число 15364(8) в X(2), X(16),X(4); число BAD(16) в X(2), X(8), X(4); число 10111101011101(2)  в X(8), X(16), X(4).

6. В какой системе счисления справедливо равенство?

315 + 62 = 410

163 + 240 = 423

121 + 40 = 211

7. Представить в дополнительном коде в соответствующих системах счисления числа:

А = 3629(10), С =  210112(3), В = 5710(10), D = 211101(3)

8. Представить в дополнительном коде в формате Shortint числа

А = 53 и А =  53(10) ; В = 47 и В =  47(10).

9. Найдите значения чисел А, В, если их дополнительные коды

ДК(А)= 0 2371(10), ДК(А)= 1 2371(10), ДК(В)= 1 2302(5), ДК(В)= 0 2302(5).