- •Представление информации в компьютере. Представление информации в компьютере.
- •1. Представление целых чисел.
- •1.1. Представление целых положительных чисел.
- •Вопрос 1. Можно ли в 8-ми разрядной ячейки представить со знаком число 200?
- •1.2. Представление целых отрицательных чисел.
- •Алгоритм получения дополнительного k-разрядного кода отрицательного числа
- •Особенности реализации арифметических операций в конечном числе разрядов.
- •2. Представление вещественных чисел.
- •Представление вещественных чисел в формате с плавающей точкой
- •Выполнение арифметических операций над вещественными числами.
- •Особенности реализации вещественной компьютерной арифметики.
- •3. Представление текстовой информации.
- •4. Представление графической информации.
- •Общие подходы к представлению в компьютере информации естественного происхождения.
- •Векторное и растровое представление графической информации.
- •Квантование цвета.
- •Цветовая модель rgb.
- •Цветовая модель cmyk.
- •Цветовая модель hsb.
- •5. Представление звуковой информации.
- •Понятие звукозаписи.
- •Импульсно – кодовая модуляция.
- •Формат midi.
- •Принципы компьютерного воспроизведения звука.
- •6. Методы сжатия цифровой информации.
- •6.1. Алгоритмы обратимых методов.
- •Метод упаковки
- •Алгоритм Хаффмана
- •Алгоритм построения дерева Хаффмана
- •Алгоритм rle
- •Алгоритмы Лемпеля-Зива.
- •6.2. Методы сжатия с регулируемой потерей информации.
- •Алгоритм jpeg
- •Алгоритм мрз
- •Алгоритмы mpeg
- •Выводы.
3. Представление текстовой информации.
Всякий текст состоит из символов — букв, цифр, знаков препинания и т. д., которые человек различает по начертанию. Однако для компьютерного представления текстовой информации такой метод неудобен, а для компьютерной обработки текстов и вовсе неприемлем.
Поскольку текст изначально дискретен — он состоит из отдельных символов, но для компьютерного представления текстовой информации используется другой способ: все символы кодируются числами, и текст представляется в виде набора чисел — кодов символов, его составляющих. При выводе текста на экран монитора или принтер необходимо восстановить изображения всех символов, составляющих данный текст. Для этого используются так называемые кодовые таблицы символов, в которых каждому коду символа ставится в соответствие изображение символа. Все кодовые таблицы, используемые в любых компьютерах и любых операционных системах, подчиняются международным стандартам кодирования символов. На заре компьютерной эпохи, когда США были абсолютным лидером в этой области, стандарты разрабатывались Американским национальным институтом стандартизации (ANSI); впоследствии для разработки и принятия компьютерных стандартов была создана Международная организация стандартизации (ISO).
В программировании наиболее часто используются однобайтовые кодировки: в них код каждого символа занимает ровно 1 байт, или 8 бит. При этом общее количество различаемых символов составляет 28 = 256, а коды символов имеют значения от 0 до 255.
Определение 7. Информационным объемом блока информации называется количество бит, байт или производных единиц (килобайт, мегабайт и т. д.), необходимых для записи этого блока путем заранее оговоренного способа двоичного кодирования.
Задание. Оцените в байтах объем текстовой информации в «Современном словаре иностранных слов» из 740 страниц, если на одной странице размещается в среднем 60 строк по 80 символов (включая пробелы).
Решение. Будем считать, что при записи используется кодировка «один символ — один байт». Количество символов во всем словаре равно 80 × 60 × 740 = 3 552 000. Следовательно, объем в байтах равен 3 552 000 байт = 3 468,75 Кбайт или приблизительно 3,39 Мбайт.
Основой для компьютерных стандартов кодирования символов послужил ASCII (American Standard Code for Information Interchange) — американский стандартный код для обмена информацией, разработанный в 1960-х годах и применяемый в США для любых видов передачи информации, в том числе и некомпьютерных (телеграф, факсимильная связь и т. д.). В нем используется 7-битовое кодирование: общее количество символов составляет 27 = 128, из них первые 32 символа — управляющие, а остальные — «изображаемые», т. е. имеющие графическое изображение. Управляющие символы должны восприниматься устройством вывода текста как команды, например:
Код |
Действие |
Английское название |
7 |
Подача стандартного звукового сигнала |
Веер |
8 |
Удаление предыдущего символа |
Back Space (BS) |
13 |
Перевод строки |
Line Feed (LF) |
26 |
Признак «Конец текстового файла» |
End Of File (EOF) |
27 |
Отмена предыдущего ввода |
Escape (Esc) |
К изображаемым символам в ASCII относятся буквы английского алфавита (прописные и строчные), цифры, знаки препинания и арифметических операций, скобки и некоторые специальные символы. Фрагмент кодировки ASCII приведен в табллице
Символ |
Десятичный код |
Двоичный код |
Символ |
Десятичный код |
Двоичный код |
Пробел |
32 |
00100000 |
0 |
48 |
00110000 |
! |
33 |
00100001 |
1 |
49 |
00110001 |
# |
35 |
00100011 |
2 |
50 |
00110010 |
$ |
36 |
00100100 |
3 |
51 |
00110011 |
* |
42 |
00101010 |
4 |
52 |
00110100 |
4- |
43 |
00101011 |
5 |
53 |
00110101 |
» |
44 |
00101100 |
6 |
54 |
00110110 |
- |
45 |
00101101 |
7 |
55 |
00110111 |
|
46 |
00101110 |
8 |
56 |
00111000 |
/ |
47 |
00101111 |
9 |
57 |
00111001 |
А |
65 |
01000001 |
N |
78 |
01001110 |
В |
66 |
01000010 |
О |
79 |
01001111 |
С |
67 |
01000011 |
р |
80 |
01010000 |
D |
68 |
01000100 |
Q |
81 |
01010001 |
Е |
69 |
01000101 |
R |
82 |
01010010 |
F |
70 |
01000110 |
S |
83 |
01010011 |
G |
71 |
01000111 |
т |
84 |
01010100 |
Н |
72 |
01001000 |
и |
85 |
01010101 |
I |
73 |
01001001 |
V |
86 |
01010110 |
J |
74 |
01001010 |
W |
87 |
01010111 |
К |
75 |
01001011 |
X |
88 |
01011000 |
L |
76 |
01001100 |
Y |
89 |
01011001 |
М |
77 |
01001101 |
Z |
90 |
01011010 |
Хотя в ASCII символы кодируются 7 битами, в памяти компьютера под каждый символ отводится ровно 1 байт, при этом код символа помещается в младшие биты, а старший бит не используется. Главный недостаток стандарта ASCII заключается в том, что он рассчитан на передачу только английского текста. Со временем возникла необходимость кодирования и неанглийских букв. Во многих странах для этого стали разрабатывать расширения ASCII-кодировки, в которых применялись однобайтовые коды символов; при этом первые 128 символов кодовой таблицы совпадали с кодировкой ASCII, а остальные (со 128-го по 255-й) использовались для кодирования букв национального алфавита, символов национальной валюты и т. п. Из-за несогласованности этих разработок для многих языков было создано по нескольку вариантов кодовых таблиц (например, для русского языка их около десятка!). Впоследствии использование кодовых таблиц было несколько упорядочено: каждой кодовой таблице было присвоено особое название и номер. Указав кодовую таблицу, автоматически выбирают и язык, которым можно пользоваться в дополнение к английскому; точнее, выбирается то, как будут интерпретироваться символы с кодами более 127. Для русского языка наиболее распространенными являются однобайтовые кодовые таблицы СР-866, Windows-1251 и КОИ-8. В них первые 128 символов совпадают с ASCII-кодировкой, а русские буквы размещены во второй части таблицы, однако коды русских букв в этих кодировках различны! Вот так будет выглядеть десятичный код слова «Диск» в разных кодировках:
КОИ-8 228 201 211 203
Windows-1251 196 232 241 234
СР-866 132 168 225 170
Однобайтовые кодировки обладают одним серьезным ограничением: количество различных кодов символов в этих кодировках недостаточно велико, чтобы можно было пользоваться одновременно несколькими языками. Для устранения этого ограничения в 1993 году был разработан новый стандарт кодирования символов, получивший название Unicode, который, по замыслу его разработчиков, позволил бы использовать в текстах любые символы любых языков мира. В Unicode на кодирование символов отводится 32 бит. Первые 128 символов (коды 0-127) совпадают с таблицей ASCII; далее размещены основные алфавиты современных языков: они полностью умещаются в первой части таблицы, их коды не превосходят 65 536 (65 536 = 216). А в целом стандарт Unicode описывает алфавиты всех известных, в том числе и «мертвых», языков; для языков, имеющих несколько алфавитов или вариантов написания (например, японский и индийский), закодированы все варианты; в кодировку Unicode внесены все математические и иные научные символьные обозначения и даже некоторые придуманные языки (например, письменности эльфов и Мордора из эпических произведений Дж. Р. Р. Толкиена). Потенциальная информационная емкость 32-битового Unicode столь велика, что сейчас используется менее одной тысячной части возможных кодов символов!
В современных компьютерах и операционных системах используется укороченная, 16-битовая версия Unicode, в которую входят все современные алфавиты; эта часть Unicode называется базовой многоязыковой страницей (Base Multilingual Plane, BMP). В UNIX-подобных операционных системах, где работа с Unicode-текстами невозможна из-за особенностей архитектуры, используются особые формы этого стандарта, которые называются UTF (Unicode Transformation Form), в них символы кодируются переменным количеством байтов. Например, в UTF-8 коды символов занимают от 1 до 6 байтов.