Статья Автор: Деникина Н.В., Деникин А.В.

Кодирование информации

Информатика ·Языки машин
Кодирование информацииASCII · байты · память · цвета
Кодирование информации

Как буквы, картинки и звуки превращаются в нули и единицы


1Что будем изучать

Главный секрет компьютера: внутри него нет ни букв, ни картинок, ни звуков. Есть только биты. Всё остальное — это договорённость, как биты толковать.

Перевод чисел — это инструмент. А кодирование — это применение инструмента к реальному миру.


2Зачем нужно кодирование

Компьютер умеет хранить и пересылать только числа — точнее, биты. А люди хотят работать с буквами, картинками, музыкой. Значит, нужен словарь: каждой букве, каждому цвету, каждому звуку дать свой номер. Этот словарь называется кодировка.

Слово «байт»

Восемь битов вместе называются байт. В одном байте помещается число от 0 до 255 (всего 256 значений, потому что 2⁸ = 256). Этого достаточно, чтобы пронумеровать всю английскую азбуку, цифры и знаки препинания. Поэтому байт стал основной «ячейкой» памяти.

1 бит  = 0 или 1            # 2 значения
1 байт = 8 битов            # 256 значений (от 0 до 255)
1 Кб   = 1024 байт          # КилоБайт
1 Мб   = 1024 Кб            # МегаБайт
1 Гб   = 1024 Мб            # ГигаБайт

3ASCII — первая кодировка букв

В 1963 году в США договорились: пусть у каждой английской буквы и знака будет свой номер от 0 до 127. Стандарт назвали ASCII (читается «аски») — American Standard Code for Information Interchange.

Вот часть таблицы, которую полезно помнить:

A
65
01000001
B
66
01000010
C
67
01000011
D
68
01000100
E
69
01000101
...
...
...
Z
90
01011010
a
97
01100001
b
98
01100010
...
...
...
z
122
01111010
0
48
00110000
1
49
00110001
9
57
00111001
␣
32
00100000
!
33
00100001
?
63
00111111
.
46
00101110
Три правила, которые нужно запомнить:
• Заглавные английские буквы идут подряд, начиная с 65 (A)
• Строчные английские буквы идут подряд, начиная с 97 (a)
• Цифры идут подряд, начиная с 48 ('0'). Внимание: символ '5' ≠ число 5!
Демонстрация: как выглядит слово в ASCII
Выберите слово — программа покажет его коды:
 
 

4Что лежит в памяти компьютера

Компьютер не отличает текст от чисел. Для него всё — набор байтов. Слово HELLO в памяти выглядит как 5 байтов подряд:

 

В каждой ячейке памяти — один байт, то есть 8 битов. Это число от 0 до 255. А что оно означает — букву, число или ещё что-то — зависит от программы, которая эту память читает.

Глубокая мысль: одна и та же последовательность байтов 72 73 33 для текстового редактора — это «HI!», для программы-калькулятора — три разных числа, для звукового редактора — крошечный отрывок звука. Биты не знают, чем они являются.


5А как же русские буквы?

Хороший вопрос! В ASCII всего 128 символов — для английского хватило, для русского места не нашлось. Поэтому позже придумали Unicode и его популярную версию UTF-8: там есть все символы всех языков мира — русский, китайский, арабский, эмодзи, древнеегипетские иероглифы.

В UTF-8 английская буква по-прежнему занимает 1 байт (как в ASCII), а русская — уже 2 байта. Эмодзи — обычно 4 байта. Поэтому файл с русским текстом весит примерно вдвое больше, чем такой же файл с английским.

# Слово HELLO в ASCII / UTF-8:
H E L L O                  →  5 байт

# Слово ПРИВЕТ в UTF-8:
П Р И В Е Т                →  12 байт   # каждая буква по 2 байта

6Картинки — это тоже числа

Картинка состоит из пикселей — крошечных цветных точек. Каждый пиксель — это смесь трёх цветов: красного (Red), зелёного (Green), синего (Blue). Каждая компонента — число от 0 до 255 (то есть 1 байт). Значит, один пиксель = 3 байта.

 
#FF0000
R=255 G=0 B=0
 
#00FF00
R=0 G=255 B=0
 
#0000FF
R=0 G=0 B=255
 
#FFFFFF
R=255 G=255 B=255
 
#000000
R=0 G=0 B=0
 
#FFFF00
R=255 G=255 B=0
 
#FF8000
R=255 G=128 B=0
 
#808080
R=128 G=128 B=128

Шестнадцатеричная запись цвета — именно поэтому шестнадцатеричная система так популярна у программистов: #FF8000 — это коротко, а в десятичной было бы (255, 128, 0).

# Сколько весит фотография 1920×1080?

1920 · 1080      = 2 073 600 пикселей
2 073 600 · 3    = 6 220 800 байт  ≈ 6 Мб

# Поэтому картинки сжимают (JPG, PNG) — иначе диски кончились бы.

7Декодер — расшифруй сообщения

Программа даёт коды — вы расшифровываете слово (заглавные английские буквы и знаки). Подсказка: A = 65, B = 66, ..., Z = 90. Если букв таблицы нет под рукой — считайте смещение от A.

Расшифруй ASCII-послание
Коды:  
 
Решено: 0 Верно: 0 Ошибок: 0
© SilverTests.ru · Информатика 7 класс · Кодирование информации · Урок 2
Печать