Кодирование чисел
Бит – наименьшая единица информации, которая выражает логическое «Да» или «Нет» и обозначается 1 или 0. Компьютер преобразует цифровую информацию, представленную в десятичной системе счисления в последовательность 0 и 1, а дальше уже работает с ними.
Системой счисления называют совокупность символов (цифр) и правил их использования для представления чисел.
Пример 1. Число 29 перевести из десятичной системы счисления в двоичную. Перевод осуществляется последовательным делением числа 29 на 2 и записью остатков от деления справа налево, как показано на схеме (рис. 3).
29: 2 = 14 + 1
14: 2 = 7 + 0
7: 2 = 3 + 1
3: 2 = 1 + 1
1 = 1
Рис. 3. Схема перевода числа из десятичной системы счисления в двоичную
Двоичная система исчисления является позиционной.
Читается: 20 – 1; 21 – 0; 22 – 1; 23 – 1; 24 – 1;
1х20 +0х21 +1х22 + 1х23 +1х24 =1+0+4+8+16=29.
Пример 2. Число 1011, заданное в двоичной системе, перевести в десятичную систему счисления.
1011 à одна единица, одна двойка, нуль четверок и одна восьмерка.
1х20 + 1х21 + 0х22 + 1х23 = 11.
Байт – группа из 8 битов.
Если учесть, что важны не только нули и единицы, но и позиции, в которых они стоят, то с помощью одного байта можно выразить 28 = 256 единиц информации:
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
11111111 = 255 Писать (или набирать на клавиатуре компьютера) длинные цепочки единиц и нулей при задании чисел в двоичном формате довольно утомительно. Так же неудобно просматривать содержимое памяти компьютера, представленное в двоичном формате. Поэтому был разработан такой метод представления двоичных данных, когда каждый байт разбивается пополам и каждая 4-битовая его половина записывается в 16-ричной системе счисления. Для ее осуществления цифровой алфавит 10-тичной системы счисления дополнили шестью цифрами, условившись, что: 10 – это A, 11 – это B, 12 – это C, 13 – это D, 14 – это E, 15 – это F. Пример 3. Десятичное число 42936 в двоичном формате имеет вид 1010011110111000. После записи полубайтов 1010 0111 1011 1000 16-ричными цифрами получаем компактную запись представленного числа – A7B8.
Кодирование текста
С помощью одного байта, как было показано, можно кодировать 256 значений. Первые 128 кодов (с 0 до 127) – стандартные и обязательные для всех стран. Эту половину таблицы кодов называют таблицей ASCII (стандартный код информационного обмена США) – ввел ее американский институт стандартизации ANSI. В этой части таблицы размещаются прописные и строчные буквы английского алфавита, символы чисел от 0 до 9, все знаки препинания, символы арифметических операций, специальные коды. Коды читают а-эс-цэ-и (аски- коды). Первых 32 кода – управляющие, которые не используются для представления информации (от 0 до 31), а 32 символ – пробел.
33 – 47 – специальные символы, знаки препинания.
48 – 57 – цифры.
58 – 64 – математические символы и знаки препинания.
65 – 90 – прописные буквы английского алфавита.
91 – 96 – специальные символы.
97 – 122 – строчные буквы английского алфавита.
123 – 127 – специальные символы.
Остальные 128 кодов используются для специальных символов и букв национальных алфавитов (в том числе русского). И поскольку общепринятого стандарта для этого не было, возникло много различных кодировок, в том числе, несколько для кириллицы. Для кириллицы используют следующие кодировки: Кириллица (Windows), Кириллица (ISO), Кириллица (KOI8–R). Кириллица (ISO) используется редко. Кириллица (Windows) используется на ПК, работающих на платформе Windows. Де-факто Кириллица(Windows) стала стандартной в российском секторе World Wide Web. Кириллица (KOI8–R) де-факто является стандартной в сообщениях электронной почты и телеконференций.
В такой ситуации, когда используются различные кодировки кириллицы, на помощь приходят программы – конверторы. Они заменяют двоичный код каждого символа на код, которым такой символ представляется в другой кодировке. Это соответствие определяется таблицей перекодировки. Пользователь должен указать, из какой кодировки в какую идет преобразование, однако есть программы, автоматически определяющие кодировку исходного текста.
Следует отметить, что все рассмотренные кодировки текста ограничены набором кодов (256). Более широкими возможностями обладает система кодировки текста UNICODE, основанная на 16-разрядном кодировании символов. Шестнадцать разрядов обеспечивают кодирование 216 =65536 символов.
Чтобы рисунок буквы был виден на экране, его цвет должен отличаться от цвета фона, на котором он изображается. Поэтому коды символов (порядковые номера в таблице кодирования) необходимо дополнить кодами цвета фона и цвета рисунков. Для этих кодов цветов добавили еще один байт памяти и разделили его пополам – младшую (левую) половину из четырех битов отвели для кодирования цвета рисунка, а старшую для кодирования цвета фона. Этот байт назвали байтом атрибутов символа. Он всегда присутствует вместе с кодом символа в двух байтовых кодах символов, передаваемых в видеопамять для отображения на экране.
Четырьмя байтами можно закодировать 16 цветов, а при необходимости кодирования большего количества цветов применяют многоступенчатую систему кодирования. Содержимое байта атрибутов удобно записывать в 16-ричном формате, у которого первая цифра в этом случае обозначает цвет фона, а вторая – цвет рисунка символа. Например, 16-ричное число 4E кодирует желтые (код желтого цвета Е или 14 в 10-й системе) буквы на красном (код красного цвета равен 4) фоне.
Двухбайтовые кодовые группы каждой буквы текста, содержащие код символа и код атрибутов его изображения для вывода на экран, записываются в память устройства управления, которое называют дисплейным адаптером, а саму память – видеопамятью или видеобуфером.
Последнее название подсказывает, что для постоянного обновления изображения на экране из этого буфера с частотой примерно 25 (или более) раз в секунду считываются коды символов и преобразуются в рисунки букв на экране. Чтобы такое преобразование стало возможным, приходится закодировать и разместить в памяти компьютера и сами рисунки букв. Для изображения символов обычно отводится в зависимости от типа видеосистемы от 8 до 16 строк по 8 пикселов в строке. О каждом пикселе в изображении символа дисплейный адаптер должен знать, относится он к фону или рисунку – то есть достаточно одного бита с двумя состояниями. Если бит содержит 0, то это пиксел фона, а если 1 – то это пиксел рисунка.
256 кодовых групп символов текста хранятся в памяти для рисунков всех изображаемых символов, и вся эта область памяти называется буфером знакогенератора. Адаптер дисплея «узнает» начальный адрес этого буфера (порядковый номер его начального байта, отсчитанный от начала памяти), берет из видеопамяти код символа, означающий порядковый номер его кодовой группы в буфере знакогенератора, умножает на число пиксельных строк в изображении символа и прибавляет полученное число к начальному адресу буфера знакогенератора. Полученное число есть начальный адрес кодовой группы изображения символа. Далее видеоадаптер берет каждый байт кодовой группы изображения и работает уже с отдельными битами байта – для нулевых битов выводит пиксел цветом фона, а для единичных – цветом рисунка (коды цвета фона и рисунка он тоже берет из видеопамяти – из байта атрибутов). Вот так появляются на экране дисплея рисунки букв, как и все в компьютере, закодированные двоичными числами. При выводе изображений символов на печать коды изображений символов и их порядковые номера хранятся в памяти печатающего устройства либо постоянно, либо заносятся туда из памяти компьютера перед началом печати.