То же относится и к синему цвету (0, 0, 255) и к зеленому (0, 255, 0).
Задавая любые значения (от 0 до 255) для каждого из трех байтов, с помощью которых кодируется цвет, можно закодировать любой из 16,5 миллионов цветов.
Кодирование графической информации
Итак, мы уже умеем с помощью чисел кодировать цвет одной точки. На это необходимы один, два или три байта, в зависимости от того, сколько цветов мы хотим передать. А как закодировать целый рисунок?
Решение приходит само собой — надо рисунок разбить на точки. Чем больше будет точек и чем мельче они будут, тем точнее будет передача рисунка. А когда рисунок разбит на точки, то можно начать с его левого верхнего угла и, двигаясь по строкам слева направо, кодировать цвет каждой точки.
Взгляните на рисунок справа. Книжка у нас черно-белая, и цветной рисунок в ней показать нельзя, поэтому мы не будем кодировать точки этого рисунка тремя байтами — нам достаточно и одного байта на каждую точку.
Код 0 обозначает черную точку, код 255 — белую. Коды 1-254 обозначают серые точки. Чем выше значение кода, тем светлее точка.
Когда все точки рисунка закодированы, получается следующая последовательность байтов:
176, 176, 176, 128, 64, 64, 64, 80, 64, 64, 80, 80, 80, 80, 80…
Если бы рисунок был цветным, то для каждой точки вместо одного байта стояло бы три байта и вся последовательность была бы втрое длиннее.
Закодировать рисунок оказалось несложно, а вот как его раскодировать, чтобы опять получить то, что было? Если раскодировать байты по одному слева направо, то никогда не узнаешь, где кончается одна строка и начинается другая.
Это говорит о том, что нам чего-то не хватает. Значит, мы что-то важное упустили из виду. Если бы перед группой байтов приписать еще небольшой заголовок, из которого было бы ясно, как надо эти байты раскодировать, то все стало бы на свои места. Этот заголовок может быть, например таким: {8х8}. По нему можно догадаться, что рисунок должен состоять из восьми строк по восемь точек в каждой строке.
Заголовок можно сделать еще подробнее, например так: {8х8х3} — тогда можно догадаться, что это рисунок цветной, в котором на кодирование цвета каждой точки использовано три байта.
Заголовок помогает решить многие вопросы, но возникает новая проблема. Как компьютер разберется, где заголовок, а где сама информация? Ведь заголовок тоже должен быть записан в виде байтов. Сумеет ли компьютер отличить байты заголовка от байтов информации? Далее мы с этим разберемся.
Идея представить любую информацию в виде чисел и закодировать их байтами очень рациональна. Компьютеру удобно работать, когда тексты, звуки, рисунки и видеофильмы представлены в виде байтов со значениями от 0 до 255. Непонятно только, как он отличит, где и что записано.
Возьмем несколько байтов: 70, 79, 82, 77, 65, 84. Что здесь записано?
• Может быть, это две цветные точки: первая с цветом 70, 79, 82, а вторая: 77, 65, 84?
• Может быть, это шесть серых точек (одни чуть светлее, а другие чуть темнее).
• Может быть, этими байтами закодирована дата и время запуска очередного спутника Земли?
• Может быть, это начало какой-то музыкальной мелодии?
Это может быть вообще все, что угодно, в том числе и английское слово FORMAT, закодированное по стандарту ASCII (проверьте, не так ли это на самом деле).
Если компьютер не знает, что выражает каждая группа байтов, он не сможет ничего с ней сделать. Он должен различать, где байтами закодирован текст, а где музыка и рисунки. Тексты должны всегда оставаться текстами, числа — числами, даты — датами, рисунки — рисунками, музыка — музыкой, а деньги, хранящиеся в банковском компьютере в виде тех же самых байтов, должны оставаться деньгами и не превращаться в звук и музыку.
Решение этой проблемы опять-таки связано с заголовком. Если бы перед группой байтов стоял специальный заголовок, то компьютер точно знал бы, что эти байты обозначают. А чтобы компьютер знал, где кончаются байты заголовка и начинаются байты данных, заголовок и данные должны иметь строго определенный формат. Для разных видов информации используются разные форматы. Например, если это черно-белая картинка, то каждый байт после заголовка определяет яркость точки, а если это цветная картинка, то цвет одной точки может определять не один байт, а несколько байтов.
Понятие о файле
Итак, мы поняли, что любая последовательность байтов может выражать все что угодно, но надо знать, в каком формате информация записана, есть ли у нее заголовок, где он начинается и где заканчивается.
Если мы пишем контрольную работу на отдельных листочках, а потом сдаем ее учителю на проверку, то как учитель узнает, какой ученик написал какую работу? Очень просто — каждый ученик свою работу подписывает, то есть выполнит регистрацию.
Точно так же и в компьютере. Каждая последовательность байтов, содержащая информацию определенного типа, должна быть зарегистрирована. После регистрации эта последовательность получает уникальное имя и называется файлом. Любая информация, сохраняемая на компьютере, должна быть зарегистрирована как файл.
Мы уже говорили о том, что наименьшей единицей представления информации является бит. Наименьшей единицей обработки или передачи информации является байт. Теперь мы узнали наименьшую единицу хранения информации — это файл. Ни байт, ни бит нельзя сохранить в качестве информации, поскольку непонятно, что они обозначают (то ли буквы, то ли ноты, то ли еще что-то). Файл можно сохранить, потому что он регистрируется, даже если в нем только один байт.
Простой пример. Если зайти в школьную библиотеку и попросить выдать букву «А», то библиотекарь этого сделать не сможет, хотя у него есть тысячи книг, в которых встречаются миллионы букв «А». Буквы в библиотеке не зарегистрированы. Другое дело — книги, журналы, газеты. Выбирайте любую по каталогу. Они зарегистрированы. В них вы найдете нужную информацию.
Файл — это наименьшая единица хранения информации, содержащая последовательность байтов и имеющая уникальное имя.
По имени файла компьютер определяет, где файл находится, какая информация в нем содержится, в каком формате она записана и какими программами ее можно обработать. Имя файла имеет очень большое значение, и мы к нему обязательно вернемся, но сделаем это несколько позже.