10.2. Системы счисления, как основа различных кодов
Кодирование информации о численности чего-либо привело к созданию систем счисления [36].
Десятичная система счисления – способ кодирования натуральных чисел, причем основание системы счисления проистекало от количества пальцев на руках. История знает и другие системы – двадцатеричная – по числу пальцев на руках и ногах. Римские цифры – другой, более наглядный способ. Один палец – I, пятерня – V, две пятерни – Х, пятьдесят – L, сто – С, тысяча – М. С помощью букв обозначали цифры и греки, и русские, и грузины. Индийцы и арабы придумали нуль и позиционную систему счисления.
Основной единицей кодирования информации в настоящее время является бит – один двоичный разряд, который может быть либо нулем (0), либо единицей (1). Подавляющее большинство ЭВМ используют двоичное представление информации. В начале эры компьютеров битами кодировали числа и команды. Потом оказалось, что такое кодирование пригодно для записи, хранения и переработки практически любой информации: изображений (видеоинформации), звука, музыки, фильмов и т.д.
Группы в три бита называют триадами, группы из четырех битов – тетрады. Наиболее часто сейчас говорят о байтах – группах из восьми бит. Два байта – это уже слово. Килобайт – это 210 бит – 1024 бита. Мегабайт – это 220 бит. Гигабайт – это 230 бит. Терабайт – это 240.
Двоичная система счисления.
В двоичной системе счисления основание 2: используется только два символа: 0,1. Поэтому арифметика очень простая: 0+0=0, 0+1=1, 1+0=1, 1+1=10 (0 и перенос в следующий разряд). Запись 11011,101 некоторого двоичного числа соответствует следующему десятичному числу: 1·24+ 1·23+0·22+ 1·21+ 1·20, 1·2-1+0·2-2+1·2-3=27,625.
Такое представление числа называется представлением с фиксированной запятой. Запятая фиксирована в соответствующей аппаратуре (арифметико-логическом устройстве АЛУ). Часто числа представлялись в виде дробей, поэтому как исходные данные, так и результаты решения задач должны были представляться именно так. Для этого проводили масштабирование – выбирали масштабные коэффициенты. Неправильный выбор масштабных коэффициентов мог вызвать так называемое переполнение разрядной сетки – ошибку в виде образования целой части, для которой в разрядной сетке нет места, и она теряется.
Рассмотрим, как выполняется двоичное суммирование:
Пусть необходимо сложить два двоичных числа 101 и 11:
Двоичное вычитание, например, (10-6 в десятичном коде) выглядит следующим образом:
Для выполнения такой операции необходим специальный «вычитатель», поэтому вычитание заменяют сложением числа в так называемом обратном коде, когда разряды вычитаемого инверсируют:
При этом образуется перенос 1, который необходимо сложить с промежуточным результатом 0011:
таким образом, получаем ответ 0100 (10-6=4 в десятичном коде).
Для операций в обратном коде необходим специальный сумматор с так называемым циклическим переносом, обеспечивающим сложение переноса с промежуточным результатом. Это неудобно, поэтому применяют так называемый дополнительный код, который устраняет циклический перенос. Представим десятичное число –6 в двоичном дополнительном коде (то есть, заменяем операцию 10-6 на операцию 10+ (–6), числа здесь в десятичном коде): –6 десятичное это –0110 двоичное, в обратном коде 1001, да еще прибавляем единицу (таковы правила образования дополнительного кода):
таким образом, дополнительный двоичный код десятичного числа –6 равен 1010. Здесь старший подчеркнутый разряд это знак, знаковый разряд. Тогда операция вычитания выглядит так:
перенос, возникающий в этом случае, просто отбрасывается, получаем 0100 (4 десятичное). Поэтому при аппаратной реализации вычитания может быть использован обычный сумматор.
Дополнительные коды четырехразрядных двоичных чисел показаны в табл. 65.
Таблица 65
Дополнительные коды
-
0000
0
0001
+ 1
0010
+ 2
0011
+ 3
0100
+ 4
0101
+ 5
0110
+ 6
0111
+ 7
1000
Не использ.
1001
- 7
1010
- 6
1011
- 5
1100
- 4
1101
- 3
1110
- 2
1111
- 1
Таким образом, в формате из четырех разрядов представимы числа в диапазоне –7+7 (23 -1).
При использовании байта с фиксированной запятой представляют целые числа в диапазоне –127+127 (27 –1).
В общем случае n бит могут кодировать 2n объектов.
Перевод чисел из десятичной в двоичную систему счисления выполняют, например, путем деления на основание системы счисления – 2, и записывают соответствующие остатки, либо подбирают соответствующие степени числа 2.
Пример. Дано десятичное число 38, ближайшая степень числа 2 – это число 32, т.е. 25, остается еще 6, ближайшая степень числа 2 – это 4, т.е. 22, остается 2, это 21. Таким образом:
0×27+0×26+1×25+0×24+0×23+1×22+1×21+0×20=100110.
Восьмеричная система счисления.
В восьмеричном коде восемь символов:
0 (000 двоичное),
1 (001 двоичное),
2 (010 двоичное),
3 (011 двоичное),
4 (100 двоичное),
5 (101 двоичное),
6 (110 двоичное),
7 (111 двоичное).
Для перевода числа из восьмеричного кода в двоичный, необходимо каждую цифру восьмеричного кода заменить на триаду (три символа) двоичного, например, 3548=11 101 1002, здесь двоичное число представлено в байтовом формате, поэтому старшая триада неполная. Наоборот, из двоичного кода в восьмеричный: 10 111 1012=2758.
Шестнадцатеричная система счисления.
В шестнадцатеричном коде шестнадцать символов:
0 (0000 двоичное),
1 (0001 двоичное),
2 (0010 двоичное),
3 (0011 двоичное),
4 (0100 двоичное),
5 (0101 двоичное),
6 (0110 двоичное),
7 (0111 двоичное),
8 (1000 двоичное),
9 (1001 двоичное),
A (1010 двоичное),
B (1011 двоичное),
C (1100 двоичное),
D (1101 двоичное),
E (1110 двоичное),
F (1111 двоичное).
Для перевода числа из двоичной системы счисления в шестнадцатеричную, необходимо заменить каждую тетраду (четыре символа) соответствующим шестнадцатеричным символом, например:
1011 11012 =BD16.
Наоборот, из шестнадцатеричного кода в двоичный:
9АEF16= 1001 1010 1110 11112.
В восьмеричном и шестнадцатеричном кодах можно строить соответствующие арифметики.
Например, в шестнадцатеричном коде: EF16+AC16=19B16 (F+C=1B, 1 переносится в следующий разряд; E+A=18, да еще +1 из предыдущего разряда =19).
В восьмеричном коде: 378+218=608.
Представление чисел в ЭВМ в двоично-кодированном десятичном формате (BCD или десятичном).
В BCD-формате десятичные цифры хранятся в виде 4-битных двоичных эквивалентов. В упакованном BCD-формате цепочка десятичных цифр хранится в виде последовательности 4-битных групп, например: 9502 в виде 1001 0101 0000 0010.
В неупакованном BCD-формате каждая цифра хранится в младшей тетраде соответствующего байта.
Представление чисел в ЭВМ в формате с плавающей запятой.
Такой формат предусматривает представление числа в показательной форме.
Например, десятичное число 685,7310. представляется в виде 0,68573103, здесь 0,68573 – мантисса, 10 – основание десятичной системы счисления, 3 – порядок.
В ячейке памяти двоичные числа в формате с плавающей запятой хранятся в виде двух групп цифр: первая группа, называемая мантиссой, определяет само число, вторая, называемая порядком, определяет место запятой в числе. Соответствующим выбором значения порядка можно добиться, чтобы старший разряд мантиссы не был равен нулю. Такая форма называется нормальной, а соответствующая операция приведения к такой форме называется нормализацией.
Кодирование буквально пронизывает информационные технологии [36].
В теории кодирования рассматриваются:
представление данных произвольной природы в памяти ЭВМ (мы рассмотрели представление чисел);
обеспечение помехоустойчивости при передаче данных по каналам связи (кодирование по нечетности, по Хэммингу, с использованием циклических полиномов);
защита данных от несанкционированного доступа (криптографическое кодирование);
сжатие информации в базах данных.
- Содержание
- 6. Элементарные двоичные переключательные функции
- 7. Основные законы булевой алгебры и преобразование
- Приложение 2. Варианты контрольных заданий по дисциплине
- Предисловие
- Дискретная математика
- 1. Множества и алгебраические системы. Булевы алгебры
- 1.1. Основные понятия теории множеств
- 1.2. Основные операции над множествами
- 1.3. Декартово произведение множеств
- 1.4. Соответствия и функции
- 1.5. Отношения
- 1.6. Использование множеств в языке Паскаль
- 2. Элементы общей алгебры
- 2.1. Операции на множествах
- 2.2. Группа подстановок Галуа
- 2.3. Алгебра множеств (алгебра Кантора)
- 2.4. Алгебраические системы. Решетки
- 2.5. Задание множеств конституентами
- 2.6. Решение уравнений в алгебре множеств.
- 3. Элементы комбинаторики
- 3.1. Комбинаторные вычисления
- 3.2. Основные понятия комбинаторики
- 3.3. Размещения
- 3.4. Перестановки
- 3.5. Сочетания
- 3.6. Треугольник Паскаля.
- 3.7. Бином Ньютона
- 3.8. Решение комбинаторных уравнений
- 4. Основные понятия теории графов
- 4.1. Способы задания графов
- 4.2. Характеристики графов
- 4.3. Понятие о задачах на графах
- 4.4. Задача о Ханойской башне
- 5. Переключательные функции и способы их задания
- 5.1. Понятие о переключательных функциях
- 5.2. Двоичные переключательные функции и способы их задания
- 5.3. Основные бинарные логические операции
- 5.4. Понятие о переключательных схемах и технической реализации переключательных функций
- 5.5. Использование логических операций в теории графов
- 6. Элементарные двоичные переключательные функции и функциональная полнота систем переключательных функций
- 6.1. Элементарные переключательные функции одной переменной
- 6.2. Элементарные переключательные (логические) функции двух переменных
- 6.3. Функциональная полнота систем переключательных функций
- 6.4. Базисы представления переключательных функций
- 6.5. Пример анализа и определения свойств пф, заданной десятичным номером
- 7. Основные законы булевой алгебры и преобразование переключательных функций
- 7.1. Основные законы булевой алгебры переключательных функций
- 7.2. Равносильные преобразования. Упрощение формул алгебры переключательных функций
- 7.3. Преобразование форм представления переключательных функций
- 8. Минимизация переключательных функций
- 8.1. Цель минимизации переключательных функций
- 8.2. Основные понятия и определения, используемые при минимизации
- 8.3. Аналитические методы минимизации переключательных функций
- 8.4. Минимизация переключательных функций по картам Карно
- 8.5. Метод поразрядного сравнения рабочих и запрещенных наборов
- Минимизация переключательных функций на основе поразрядного сравнения рабочих и запрещенных восьмеричных наборов.
- 8.6. Минимизация переключательных функций, заданных в базисе {, и, не}
- 8.7. Минимизация систем переключательных функций
- 8.8. Минимизация переключательных функций методом неопределенных коэффициентов
- 9. Понятие об автомате и его математическом описании
- 9.1. Основные определения теории конечных автоматов
- 9.2. Описание конечных детерминированных автоматов
- 9.3. Понятие о технической интерпретации конечных автоматов
- 9.4. Синтез комбинационных автоматов в заданном базисе
- 9.5. Булева производная
- 9.6. Элементарные автоматы памяти на основе комбинационного автомата и задержки
- 9.7. Синтез автомата – распознавателя последовательности
- 10. Элементы теории кодирования
- 10.1. Понятие о кодировании
- 10.2. Системы счисления, как основа различных кодов
- 10.3. Понятие о помехоустойчивом кодировании
- 10.4. Кодирование по Хэммингу
- 10.5. Кодирование с использованием циклических кодов и математического аппарата умножения и деления полиномов. Сигнатурный анализ
- 10.6. Понятие о криптографической защите информации
- 10.7. Понятие о сжатии информации