0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
0000 0011 = 3
0000 0100 = 4
0000 0101 = 5
1111 1100 = 252
1111 1101 = 253
1111 1110 = 254
1111 1111 = 255
Всегда ли байты состояли из восьми битов? Нет, не всегда. Еще в 60-е годы, когда не было персональных компьютеров и все вычисления проводились на больших электронно-вычислительных машинах (ЭВМ), байты могли быть какими угодно. Наиболее широко были распространены ЭВМ, у которых байт состоял из шести битов, но были и такие, у которых он состоял из четырех и даже из семи битов.
Восьмибитный байт появился достаточно поздно (в начале семидесятых годов), но быстро завоевал популярность. С тех пор понятие о байте, как о группе из восьми битов, является общепризнанным.
Биты
1
2
3
4
5
6
7
8
Количество кодируемых значений
16
32
64
128
256
Коды ASCII по-русски произносят как а эс-цэ-и, а иногда (в просторечии) еще проще аски-коды.
Стандартная кодировка ASCII
В русском алфавите буква А имеет первое место, а буква Б - второе. У каждой буквы есть своя позиция. Буква Я имеет позицию номер 33. Мы можем считать, что алфавит -- это таблица для кодирования букв.
Стандарт ASCII -- это тоже как бы «алфавит», только компьютерный. Он тоже определяет номер каждого символа. Но символов больше, чем букв, потому что к ним относятся еще и цифры, и знаки препинания, и некоторые специальные символы.
Выше мы сказали, что с помощью одного байта можно закодировать 256 разных символов. Еще мы узнали, что стандарт ASCII определяет первую половину кодовой таблицы, то есть, кодировку символов, имеющих номера до 127. Но это не совсем так. На самом деле стандарт ASCII первые 32 кода (от 0 до 31) не определяет. Он оставляет их для так называемых управляющих кодов, которые не используются для представления информации, а применяются для управления компьютерами. Эти коды отданы на усмотрение производителей компьютерных систем (у них есть свои соглашения и свои стандарты по применению этих кодов). Еще несколько лет назад людям, работающим с компьютерами, стоило знать некоторые из этих кодов, но сегодня это уже не требуется.
Самый первый символ стандарта ASCII -- это ПРОБЕЛ. Он имеет код 32.
За ним идут специальные символы и знаки препинания (коды с 33 по 47).
Далее идут десять цифр (коды 48-57).
Коды 58--64 используют некоторые математические символы и знаки препинания.
Самое интересное начинается с кодов 65--90. Ими обозначают прописные английские буква от А до Z
Коды 91--96 используются для специальных символов.
Коды 97--122 -- строчные буквы английского алфавита.
Коды 123-127 -- специальные символы.
Коды верхней половины таблицы символов (128-255) отданы для национальных стандартов. Когда мы узнаем о компьютере немного больше, мы разберемся с несколькими российскими стандартами и посмотрим, как кодируются буквы русского языка.
Имея под рукой кодовую таблицу символов, вы можете легко определить, какие слова закодированы следующими байтами
67 79 77 80 85 84 69 82 99 111 109 112 117 116 101 114
У вас раскодирование информации займет пару минут. Компьютер сделает это за несколько миллионных долей секунды.
Кодирование цветовой информации
С помощью одного байта можно закодировать 256 разных значений. Мы уже знаем, что этого вполне хватает и на русские, и на английские буквы и на знаки препинания. А давайте посмотрим, хватит ли этою для кодирования графической информации. И начнем с кодирования цвета.
Легко догадайся, что одним байтом можно закодировать 256 различных цветов. В принципе, этого достаточно для рисованных изображений типа тех, что мы видим в мульфильмах, но для полноцветных изображении живой природы -- недостаточно. Человеческий глаз -- не самый совершенный инструмент, но и он может различать десятки миллионов цветовых оттенков.
А что, если на кодирование цвета одной точки отдать не один байт, а два, то есть, не 8 битов, а 16. Мы уже знаем, что добавление каждого бита увеличивает в два раза количество кодируемых значений. Добавление восьми битов восемь раз удвоит это количество, то есть увеличит его в 256 раз (2х2х2х2х2х2х2х2=256) Двумя байтами можно закодировать 256х256=65 536 различных цветов. Это уже лучше и похоже на то, что мы видим на фотографиях и на картинках в журналах, но все равно хуже, чем в живой природе.
Если для кодирования цвета одной точки использовать 3 байта (24 бита), то количество возможных цветов увеличится еще в 256 раз и достигнет 16,5 миллионов. Этот режим позволяет хранить, обрабатывать и передавать изображения, не уступающие по качеству наблюдаемым в живой природе.
Возможно, вы знаете, что любой цвет можно представить в виде комбинации трех основных цветов: красного, зеленого и синего (их называют цветовыми составляющими). Если мы кодируем цвет точки с помощью трех байтов, то первый байт выделяется красной составляющей, второй -- зеленой, а третий -- синей. Чем больше значение байта цветовой составляющей, тем ярче этот цвет.
Белый цвет. Если точка имеет белый цвет, значит, у нее есть все цветовые составляющие, и они имеют полную яркость. Поэтому белый цвет колируется тремя полными байтами 255, 255, 255.
Черный цвет. Он означает отсутствие всех прочих цветов. Все цветовые составляющие равны нулю. Черный цвет кодируется байтами 0, 0, 0.
Серый цвет. Это цвет, промежуточный между черным и белым. В нем есть все цветовые составляющие, но они одинаковы и нейтрализуют друг друга. Например, серый цвет может быть таким 100, 100, 100 или таким: 150, 150, 150. Можно догадаться, что во втором случае яркость выше, и второй вариант серого цвета светлее первого.
Красный цвет. У него все составляющие, кроме красной, равны нулю. Это может быть, например, темно-красный цвет: 128, 0, 0 или ярко-красный: 255, 0, 0.
То же относится и к синему цвету (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} -- тогда можно догадаться, что это рисунок цветной, в котором на кодирование цвета каждой точки использовано три байта.
Заголовок помогает решить многие вопросы, но возникает новая проблема. Как компьютер разберется, где заголовок, а где сама информация? Ведь заголовок тоже должен быть записан в виде байтов. Сумеет ли компьютер отличить байты заголовка от байтов информации? Далее мы с этим разберемся.
Понятие о файле
Итак, мы поняли, что любая последовательность байтов может выражать все что угодно, но надо знать, в каком формате информация записана, есть ли у нее заголовок, где он начинается и где заканчивается.
Если мы пишем контрольную работу на отдельных листочках, а потом сдаем ее учителю на проверку, то как учитель узнает, какой ученик написал какую работу? Очень просто -- каждый ученик свою работу подписывает, то есть выполнит регистрацию.
Точно так же и в компьютере. Каждая последовательность байтов, содержащая информацию определенного типа, должна быть зарегистрирована. После регистрации эта последовательность получает уникальное имя и называется файлом. Любая информация, сохраняемая на компьютере, должна быть зарегистрирована как файл.
Мы уже говорили о том, что наименьшей единицей представления информации является бит. Наименьшей единицей обработки или передачи информации является байт. Теперь мы узнали наименьшую единицу хранения информации -- это файл. Ни байт, ни бит нельзя сохранить в качестве информации, поскольку непонятно, что они обозначают (то ли буквы, то ли ноты, то ли еще что-то). Файл можно сохранить, потому что он регистрируется, даже если в нем только один байт.
Простой пример. Если зайти в школьную библиотеку и попросить выдать букву «А», то библиотекарь этого сделать не сможет, хотя у него есть тысячи книг, в которых встречаются миллионы букв «А». Буквы в библиотеке не зарегистрированы. Другое дело -- книги, журналы, газеты. Выбирайте любую по каталогу. Они зарегистрированы. В них вы найдете нужную информацию.
Файл -- это наименьшая единица хранения информации, содержащая последовательность байтов и имеющая уникальное имя.
По имени файла компьютер определяет, где файл находится, какая информация в нем содержится, в каком формате она записана и какими программами ее можно обработать. Имя файла имеет очень большое значение, и мы к нему обязательно вернемся, но сделаем это несколько позже.
Страницы: 1, 2, 3