Информатика ·Языки машин
Кодирование информации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.
Вот часть таблицы, которую полезно помнить:
Три правила, которые нужно запомнить:
• Заглавные английские буквы идут подряд, начиная с 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 байта.
#FFFFFF
R=255 G=255 B=255
#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