Кодирование графической информации (пиксель, растр, кодировка цвета, видеопамять)
Для кодирования графической информации в двоичной форме используется поточечный метод. Как правило, любое изображение на экране компьютера состоит из точек. Такое представление называется растровым. Координаты каждой точки можно запомнить в виде чисел. Цвет каждой точки тоже можно запомнить в виде числа. А когда рисунок разбит на точки, то можно начать с его верхнего левого угла, и двигаясь по строкам слева направо, кодировать цвет каждой точки. Чем больше точек, тем точнее информация об изображении.
Цвета в природе редко являются простыми. Большинство цветовых оттенков образуются смешением основных цветов. Любой цвет может быть представлен в виде суммы зеленого (Green), синего (Blue) и красного (Red) цветов различной яркости (цветовая модель RGB). Поэтому информация о каждой точке должна содержать следующие сведения:
координаты точки;
яркость ее зеленого цвета
яркость ее синего цвета
яркость ее красного цвета
Рассмотрим самый простой случай – каждый кусочек пикселя может либо гореть (1), либо не гореть (0). Тогда мы получаем набор цветов, отраженный в таблице .
Палитра цветов
Красный
| Зеленый
| Синий
| Полученный цвет
| 0
| 0
| 0
| Черный
| 0
| 1
| 0
| Зеленый
| 0
| 0
| 1
| Синий
| 1
| 0
| 0
| Красный
| 0
| 1
| 1
| Бирюзовый
| 1
| 1
| 0
| Желтый
| 1
| 0
| 1
| Малиновый
| 1
| 1
| 1
| Белый
|
Ну а если различных типов яркости будет не 2, а 64? Тогда не трудно догадаться, что различных цветов будет 64*64*64=262144.
Итак, любое графическое изображение на экране можно закодировать с помощью чисел, сообщив, сколько в каждом пикселе долей красного, синего и зелёного цветов, как показано на рисунке 1.
Рисунок 1
Кодирование звуковой информации
Звук представляет собой звуковую волну с непрерывно меняющейся амплитудой и частотой. Чем больше амплитуда сигнала, тем он громче для человека. Для того, чтобы компьютер мог обрабатывать звук, звуковой сигнал должен быть оцифрован, то есть превращен в последовательность 0 и 1. Для этого непрерывная звуковая волна разбивается на отдельные временные участки, причем для каждого участка устанавливается определенная величина амплитуды. Этот процесс носит название дискретизация.
Представление числовой информации в различных системах счисления. Компьютерное представление числовой информации
Базовые понятия:
Позиционная система счисления
Непозиционная система счисления
Двоичная система счисления
Восьмеричная и шестнадцатеричная системы счисления
Тема «система счисления» имеет прямое отношение к математической теории чисел. Но так как в школьном курсе математики она, как правило, не изучается, то существует необходимость изучения этой темы в курсе информатики. И связано это с тем фактом, что числа в памяти компьютера представлены в двоичной системе счисления, а для внешнего представления содержимого памяти используются шестнадцатеричная или восьмеричная система. Являясь смежной с математикой, данная тема вносит вклад так же и в фундаментальное математическое образование школьников.
Ученики, безусловно, знакомы с записью чисел как римскими, так и арабскими цифрами. Они привыкли видеть римские цифры в обозначении глав в книге, в указании столетия и в некоторых других нумерациях. Математические расчёты они всегда производят в арабском представлении чисел. В данной теме учителю предстоит раскрыть перед учениками эти, казалось бы, знакомые вещи с новой стороны.
С методической точки зрения бывает очень эффективным, когда учитель подводит учеников к самостоятельному, пусть маленькому, открытию. В данном случае желательно, чтобы ученики сами подошли к формулировке различия между позиционным и непозиционным принципом записи чисел. Сделать это можно, отталкиваясь от конкретного примера. Напишите на доске два числа ХХХ и 333
Первое – римское число 30, второе – арабское 333. Зададим ученикам вопрос:
-Чем отличается принцип записи многозначных чисел римскими и арабскими цифрами?
Скорее всего, вы сразу не услышите ответ, который бы хотели получить. Тогда, указывая на отдельные цифры римского числа спросите их:
- Что обозначает эта цифра?
-Десять
-А вот эта цифра?
- Десять
-А эта?
- Десять
-Как получается значение данного числа?
-Десять прибавить десять, прибавить десять, получается тридцать!
А теперь переходим к числу 333. Сперва задаём вопросы:
-Какое количество в записи числа обозначает первая цифра справа?
-Три единицы.
- А вторая?
- Три десятка.
- А третья цифра?
- Три сотни.
-А как получить общее значение числа?
-К трём единицам прибавить три десятка и прибавить три сотни.
Из этого диалога следуют все правила, которые учитель должен сообщить ученикам. В римском способе записи чисел значение, которое несёт каждая цифра в числе, не зависит от позиции этой цифры. В арабском же способе, значение, которое несёт каждая цифра в записи числа, зависит не только от того, какая это цифра, но и от позиции, которую она занимает. Сделав ударение на слове «позиция», учитель сообщает, что римский способ записи чисел называется непозиционным, а арабский – позиционным. После этого можно ввести термин «система счисления».
Следует подчеркнуть связь между способом записи чисел и приёмами арифметических вычислений в соответствующей системе счисления. Предложите ученикам выполнить умножение, например, числа 134 на 76, используя римскую и арабскую системы счисления. С арабскими числами они легко справятся, также смогут убедиться, что римские цифры – не помощники в вычислениях. В римской системе нет простых и понятных правил выполнения вычислений с многозначными числами. Для арабской системы такие правила известны еще с IX в. В этой теме полезно рассказать ученикам, что правила выполнения вычислений с многозначными числами были разработаны выдающимся математиком средневекового Востока Мухаммедом аль-Харезми и в Европе были названы алгоритмами. Этот факт следует напомнить позже, при изучении алгоритмизации. Итак, именно позиционные системы счисления стали основой современной математики. Далее, как и в математике, в информатике мы будем иметь дело только с числами в позиционных системах счисления.
Теперь нужно дать понять ученикам, что позиционных систем счисления существует множество, и отличаются они друг от друга алфавитом – множеством используемых цифр. Размер алфавита (число цифр) называется основанием системы счисления. Задайте вопрос: «Почему арабская система называется десятичной системой счисления?» Наверняка услышите в ответ про десять цифр в алфавите. Делаем вывод: основание арабской системы счисления равно десяти, поэтому она называется десятичной.
Следует показать алфавиты различных позиционных систем счисления. Системы с основанием не больше десяти используют только арабские цифры. Если же основание больше десяти, то в роли цифр выступают латинские буквы в алфавитном порядке. Из таких систем в дальнейшем будет рассматриваться лишь шестнадцатеричная система.
Далее нужно научить учеников записывать натуральный ряд чисел в различных позиционных системах. Объяснение следует проводить на примере десятичной системы, для которой вид натурального ряда чисел им хорошо известен:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …, 19, 20, …, 99, 100, 101, ….
Принцип построения ряда таков: сначала в порядке возрастания значений записываются все однозначные числа; первое двузначное число - всегда 10 (у многозначных целых чисел 0 впереди не является значащей цифрой и обычно не пишется). Далее следует все двузначные сочетания единицы с другими цифрами; затем – двузначные числа, начинающиеся с 2, затем - с 3 и т.д. Самое большое двузначное число – 99. Затем идут трехзначные числа, начиная от 100 до 999 и т.д.
По такому же принципу строится натуральный ряд в других системах счисления. Например, в четверичной системе (с основанием 4 ):
1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33, 100, 101, 102, 103, …, 333, 1000, …
Аналогично и для других систем. Наибольший интерес представляет натуральный ряд двоичных чисел. Вот как он выглядит:
1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, …
Следует обратить внимание учеников на быстрый рост числа цифр.
Для указания на основание системы, к которой относится число, вводим индексное обозначение. Например, 368 указывает на то, что число в восьмеричной системе счисления, 1А616 – шестнадцатеричное число, 10112 – число в двоичной системе. Индекс всегда записывается десятичным числом. Следует подчеркнуть то, что в любой системе счисления, ее основание записывается как 10.
Еще одно важное замечание: ни в коем случае нельзя называть недесятичные числа так же, как десятичные. Например, нельзя называть восьмеричное число 368 как тридцать шесть. Надо говорить: «Три-шесть». Следует также помнить, что, например, 0,12 – это не одна десятая, а одна вторая, 0,18 – это одна восьмая.
Сущность позиционного представления чисел отражается в развернутой форме записи чисел. Снова для объяснения привлекаем десятеричную систему. Например:
5319,12=500+300+10+9+0,1+0,02=5*103+3*102+1*101+9+1*10-1+2*10-2.
Последнее выражение и называется развернутой формой записи числа. Слагаемые в этом выражении являются произведениями значащих цифр числа на степени десятки (основания системы счисления), зависящие от позиции цифры в числе – разряда. Цифры в целой части умножаются на положительные степени 10, а цифры в дробной части – на отрицательные степени. Показатель степени является номером соответствующего разряда. Аналогично можно получить развернутую форму чисел в другой системе счисления. Например, для восьмеричного числа: 17538=1*103+7*102+5*101+3.
Здесь 108=810.
Следующий вопрос, изучаемый в этом разделе, - способы перевода чисел из одной системы счисления в другую. Основная идея заключается в следующем: перевод чисел неизбежно связан с выполнением вычислений. Поскольку нам хорошо знакома лишь десятичная арифметика, то любой перевод следует свести к выполнению вычислений над десятичными числами.
Объяснение способов перевода следует начать с перевода десятичных чисел в другие системы счисления. Делается это просто: нужно перейти к записи развернутой формы числа в десятичной системе. Вот пример такого перехода для приведенного выше восьмеричного числа:
17538=(1*103+7*102+5*101+3)8=(1*83+7*82+5*81+3)10.
Теперь нужно вычислить полученное выражение по правилам десятичной арифметики и получить окончательный результат:
17538=(512+448+40+3)10=100310.
Чаще всего развернутую форму числа сразу записывают в десятичной системе. Вот еще пример с двоичным числом:
101101,12=(1*25+0*24+1*23+1*22+0*21+1+1*2-1)10=32+8+4+1+0,5=45,510. Для вычисления значения числа по его развернутой форме записи существует удобный прием, который называется вычислительной схемой Горнера. Суть его состоит в том, что развернутая запись числа преобразуется в эквивалентную форму с вложенными скобками. Например, для рассмотренного выше восьмеричного числа это выглядит так :
17538=(1*83+7*82+5*81+3)10=((1*8+7)*8+5)*8+3.
Нетрудно понять, что если раскрыть скобки, то получится то же самое выражение. В чем же удобство скобочной структуры? А в том, что ее вычисление производится путем выполнения последовательной цепочки операций умножения и сложения в порядке их записи слева направо. Для этого можно использовать самый простой калькулятор (без памяти), поскольку не требуется сохранять промежуточные результаты. Схема Горнера сводит вычисление таких выражений к минимальному числу операций.
Перевод десятичных чисел в другие системы счисления – задача более сложная. В принципе, все происходит через ту же самую развернутую форму записи числа. Только теперь нужно суметь десятичное число разложить в сумму по степеням нового основания n10. Например, число 8510 по степеням двойки раскладывается так:
8510=1*26 + 0*25 + 1*24 + 0*23 + 1*22 + 0*2 + 1 = 10101012
Однако проделать это в уме довольно сложно. Здесь следует показать форматную процедуру (алгоритм) такого перевода. Для закрепления знаний можно выполнить задания из приложения 2.
В рамках минимального объёма базового курса не обязательно изучать приёмы перевода дробных десятичных чисел в другие системы счисления. При знакомстве с этим вопросом в углублённом курсе нудно обратить внимание на следующее обстоятельство: десятичные дроби с конечным числом цифр при переводе в другие системы могут преобразоваться в бесконечные дроби. Если удаётся найти период, тогда его следует выделить. Если же период не обнаруживается, то нужно договориться о точности (т.е. о количестве цифр), с которой производится перевод.
Если ставится цель получения при переводе дробного числа наиболее близкого значения, то, ограничивая число знаков, нужно производить округления. Для этого в процессе перевода следует вычислять на одну цифру больше, а затем, применяя правила округления сокращать эту цифру. Выполняя округление, нужно соблюдать следующее правило: если первая отбрасываемая цифра больше или равно n/2 (n- основание системы), то к сохраняемому младшему разряду числа +1. Например, округление восьмеричного числа 32,324718 до одного знака после запятой даст в результате 32,3; а округление до двух знаков после запятой 32,33.
Математическая суть отмеченной выше проблемы связана со следующим фактом: многие дробные рациональные десятичные числа в других системах счисления оказываются иррациональными.
Применение двоичной системы счисления в ЭВМ может рассматриваться в двух аспектах:
двоичная нумерация
двоичная арифметика, т.е. выполнение арифметических вычислений над двумя числами.
С двоичной нумерацией ученики встретятся в теме «Представление текста в компьютерной памяти». Рассказывая о таблице кодировки ASCII, учитель должен сообщить ученикам, что внутренний двоичный код символа – это его порядковый номер в двоичной системе счисления.
Практическая потребность знакомства с двоичной арифметикой возникает при изучении работы процессора. В этой теме рассказывается, как процессор ЭВМ выполняет арифметические вычисления. Согласно принципу ДЖ. Фон Неймана, компьютер производит вычисления в двоичной системе счисления. В рамках базового курса достаточно ограничиться рассмотрением вычислений с целыми двоичными числами.
Для выполнения вычислений с многозначными числами необходимо знать правила сложения и правила умножения однозначных чисел. Вот эти правила:
0+0=0 0*0=0
1+0=1 1*0=0
1+1=10 1*1=1
Принцип перестановочности сложения и умножения работает во всех системах счисления. Далее следует сообщить, что приемы выполнения вычислений с многозначными числами в двоичной системе аналогичны десятичной. Иначе говоря, процедуры сложения, вычитания и умножения «столбиком» и деления «уголком» в двоичной системе производится так же, как и в десятичной.
Рассмотрим правила вычитания и деления двоичных чисел. Операция вычитания является обратной по отношению к сложению. Из приведенной выше таблицы сложения следует правила вычитания:
0-0=0; 1-0=1; 10-1=1.
А вот пример вычитания многозначных чисел:
_1001101101
100110111
100110110
Полученный результат можно проверить сложением разности с вычитаемым. Должно получиться уменьшаемое число.
Деление – операция обратная умножению. В любой системе счисления делить на ноль нельзя. Результат деления на 1 равно делимому. Деление двоичного числа на 102 ведёт к перемещению запятой на один разряд влево, подобно десятичному делению на десять. Например:
10010:10 = 1001; 1011:10 – 101,1; 101100:10 = 10110.
Деление на 100 смещает запятую на два разряда. В базовом курсе можно не рассматривать сложные примеры деления многозначных двоичных чисел. Хотя способные ученики справиться и с ними, поняв общие принципы.
Представление информации, хранящейся в компьютерной памяти в её истинном двоичном представлении весьма громоздко из-за большого количество цифр. Имеется в виду запись такой информации на бумаге или выводе её на экран. Для этих целей принято использовать 8-ричную или 16-ричную системы счисления. В современных ПК чаще всего используется 16-ричная.
Существует простая связь между 2-ным и 16-ричным представлением числа. При переводе числа из одной системы в другую, одной 16-ричной цифре соответствует четырёхразрядный двоичный код. Это соответствие отражено в таблице 1. 16
| 2
| 16
| 2
| 0
| 0000
| 8
| 1000
| 1
| 0001
| 9
| 1001
| 2
| 0010
| A
| 1010
| 3
| 0011
| B
| 1011
| 4
| 0100
| C
| 1100
| 5
| 0101
| D
| 1101
| 6
| 0110
| E
| 1110
| 7
| 0111
| F
| 1111
| Таблица 1 Такая связь основана на том, что 16 = 24, и число различных четырёхразрядных комбинаций из цифр 0 и 1 равно 16: от 0000 до 1111. Поэтому перевод чисел из «16» в «2» и обратно производится путём формальной перекодировки. Принято считать, что если нано шестнадцатеричное представление внутренней информации, то это равносильно наличию двоичного представления. Желательно, чтобы ученики запомнили двоичную - шестнадцатеричную таблицу. Тогда действительно для них шестнадцатеричное представление станет эквивалентно двоичному. В шестнадцатеричном виде записываются адреса оперативной памяти компьютера. Например, для учебного компьютера «Нейман» диапазон адресации байтов памяти от 00 до FF. Рассматривая структуру памяти компьютера, можно обсудить с учениками следующий вопрос: как связан диапазон адресов с разрядностью адреса. В учебном компьютере «Нейман» адреса памяти представляются 8-разрядными двоичными числами (2-разрядными шестнадцатеричными). Поэтому число различных адресов равно 28, а диапазон значений – от 0 до 28 – 1 = 255 (FF16). Если адрес 16-разрядный, что часто имеет место для реальных ЭВМ, то размер адресуемой памяти равен 216 байт = 26 Кбайт = 64Кбайт. Диапазон 16-ричных адресов в таком случае: от 0000 до FFFF.
В современных компьютерах существуют приёмы, позволяющие адресовать гораздо большие размеры памяти без увеличения разрядности адреса. Для этого используется многоуровневая структура организации памяти.
|