- •Введение
- •1. Предмет информатики
- •1.1 Роль информации в современном обществе
- •1.2 Информационные барьеры в истории человечества
- •1.3 Предметная область информатики
- •2. Теория информации
- •2.1 Исходные понятия теории информации
- •2.2 Формы представления информации
- •2.3 Преобразование сообщений
- •3. Понятие информации в теории Шеннона
- •3.1 Понятие энтропии
- •3.2 Условная энтропия
- •3.3 Статистическое определение информации
- •3.4 Энтропия и информация
- •3.5 Информация и алфавит
- •4. Кодирование символьной информации
- •4.1 Постановка задачи кодирования. Первая теорема Шеннона
- •4.2 Алфавитное неравномерное двоичное кодирование сигналами равной длительности
- •4.2.1 Неравномерный код с разделителем
- •4.2.2 Префиксное неравномерное кодирование
- •4.3 Равномерное алфавитное двоичное кодирование. Байтовый код
- •4.4 Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе
- •4.5 Блочное двоичное кодирование
- •5. Кодирование и представление чисел в компьютере
- •5.1 Системы счисления
- •5.2 Перевод чисел из одной системы счисления в другую
- •5.3 Перевод чисел между системами счисления с основанием 2k
- •5.4 Формы представления вещественных чисел
- •5.5 Кодирование целых чисел в компьютере
- •5.5.1 Кодирование в компьютере целых чисел без знака
- •5.5.2 Кодирование в компьютере целых чисел со знаком
- •5.6 Кодирование в компьютере вещественных чисел
- •5.7 Двоично-десятичные коды
- •5.7.1 Код (8421) – код прямого замещения
- •6. Обработка чисел в компьютере
- •6.1 Выполнение операций сложения
- •6.2 Сложение нормализованных чисел
- •6.3 Выполнение операции умножения
- •6.3.1 Общий алгоритм умножения
- •6.3.2 Особенности умножения в форме с плавающей запятой
- •6.4 Деление чисел
- •7. Кодирование графической и звуковой информации
- •7.1 Представление изображений
- •7.2 Представление звука
- •Список литературы
- •Родина Наталья Васильевна Информатика
- •Часть 1
- •107846, Москва, ул.Стромынка, 20
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).