Рис. 1.1. Перевод десятичного числа 23 в двоичное число
Cтаршей цифрой сформированного двоичного кода является бит, полученный последним. Таким образом, десятичное число 23 в двоичной системе счисления равняется 10111. Для проверки правильности полученного кода можно выполнить следующее преобразование согласно формуле (1.1): 1*24 +0*23 + 1*22 +1*21 +1*20 = 23.
Перевод числа 4A3F16 из шестнадцатиричной системы счисления в десятичную систему выполняется следующим образом:
4A3F16 = 4*163+A*162+3*161+F*160 = 1900710. Необходимо помнить, что цифра A16 =1010, а F16 =1510 .
Для записи целого двоичного числа в 8- или 16-ричной системе счисления, его нужно разбить на группы по 3 или 4 цифры справа налево соответственно для 8- и 16-ричной систем счисления.
Например, двоичный код 110001112 в 8-ричной системе счисления соответствует 3078, а в 16-ричной системе - С716 .
Ниже приведена таблица соответствия десятичных, двоичных и шестнадцатиричных систем счисления:
Десятичная | Двоичная | Шестнадцатиричная |
A | ||
B | ||
C | ||
D | ||
E | ||
F |
1.4. Основы булевой алгебры
Булева алгебра широко используется для описания функционирования некоторых из аппаратных средств компьютера, поскольку компьютер использует двоичную систему счисления, а логические переменные в булевой алгебре также принимают только два значения:истина и ложь. Булева алгебра названа в честь ее разработчика - английского математика 19 века Дж. Буля. Исходным понятием логики высказываний является простое высказывание, которое не определяется через другие понятия, так как является базовым. Если смысл, содержащийся в высказывании, соответствует действительности, то высказывание называют истинным, в противном случае – ложным. Так например, высказывание «8 - четное число» является истиной, а высказывание «СПб – столица Российской Федерации» - ложью.
|
Булева алгебра, называемая также алгеброй логики, оперирует с переменными, например Х и У, которые могут принимать только два значения: "истина" или "ложь", кодируемые посредством двоичных цифр 1 и 0 соответственно. Операции над этими переменными выполняются логическими элементами. Элемент реализует одну из трех основных логических операций: дизъюнкция, конъюнкция, отрицание, а также комбинацию данных операций.
Под логическим элементом компьютера понимают электронную схему, реализующую элементарную логическую функцию. Для кодирования состояний 1 и 0 в логических элементах соответствующие им сигналы представляют одним из двух уровней напряжения, например 2 вольта и 0 вольт. Высокий уровень напряжения соответствует значению 1-“ истина ”, а низкий – “ ложь ”. Каждый логический элемент имеет свое условное обозначение, которое определяет выполняемую логическую функцию.
Функционирование логического элемента представляют посредством таблиц истинности, в которых определены все сочетания возможных значений входных и выходных сигналов - результатов операции для каждой из входных комбинаций. Рассмотрим функционирование основных логических схем.
Логическая схема «И». Данная с хема выполняет операцию конъюнкции (логическое умножение) двух или более входных сигналов. Представление схемы «И» на два входа Х и У показано на рис. 1.2.
|
& |
X |
Y |
Z |
Рис. 1.2. Логическая схема «И»
Таблица истинности данной схемы имеет следующий вид:
x | y | z=x ^ y |
Знак «^» обозначает логическую операцию конъюнкции. Единица на выходе схемы «И» появляется только тогда, когда на обоих входах x и y будут единицы. Если хотя бы на одном входе ноль, то выходной сигнал будет равен нолю. Связь между входными сигналами x, y и выходным сигналом z определяется уравнением: z = x ^ y (читается как "x и y"). Операция конъюнкции обозначается символом "&" и читается как "амперсанд" (является сокращенной записью английского слова «and»). Логическая операция конъюнкция может быть использована для математического описания следующей электрической схемы (рис. 1.3):
К1 |
Аккумулятор GB1 |
Индикатор EL1 |
К2 |
Рис. 1.3. Схема реализации конъюнкции
Индикатор сработает только в том случае, если ключи «К1» и «К2» будут включены. Таким образом, логику работы данной схемы можно описать логической функцией конъюнкции, в которой «К1» и «К2» являются входными сигналами, а выходной сигнал (протекающий ток) воздействует на индикатор.
Логическая схема ИЛИ. Схема ИЛИ реализует операцию дизъюнкции двух или более логических переменных. Если на одном входе схемы ИЛИ сигнал равняется 1, то выходной сигнал также будет равен 1.
Условное обозначение двухвходовой схемы ИЛИ показано на рис.1.4. Символ "1" на схеме обозначает операцию дизъюнкции. Функциональная связь между выходным сигналом z и входными сигналами x и y представляется выражением: z = x v y (читается как "x или y").
|
X |
Y |
Z |
Рис. 1.4. Логическая схема «ИЛИ»
Таблица истинности схемы ИЛИ имеет вид:
x | y | z=x v y |
Логическая схема Инверсии. Даннаясхема выполняет операцию отрицания. Функциональная связь между входным сигналом Х и выходным сигналом z представляется уравнением z = /x, где «/» (слэш) читается как ""Инверсия х" или Не x". Если входной сигнал равен 0, то на выходе схемы будет1, а при входном сигнале, равным 1, на выходе будет 0. Условное обозначение данного элемента на схеме представлено на рисунке 1.4.
НЕ |
X |
Z |
Рис. 1.5. Логическая схема «Инверсии"
Таблица истинности схемы «Инверсия» имеет вид:
x | z |
Более сложные логические схемы для выполнения логических преобразований информации могут быть построены из этих трех простейших элементов. Сигнал, выработанный одним логическим элементом, можно подавать на вход другого элемента, это дает возможность образовывать цепочки из отдельных логических элементов. Для логических функций двух переменных существует только 16 различных функций, таблицы истинности представлены ниже:
x1 | x2 | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 |
x1 | x2 | F8 | F9 | F10 | F11 | F12 | F13 | F14 | F15 |
В число этих функций входят 6 «вырожденных» функций одной переменной: (константы: F0=0 и F15=1; переменные: F3=x1 и F5=x2; инверсии: F12=not x1 и F10=not x2). Остальные функции двух переменных приведены ниже в таблице:
Функция | Название | Читается |
F1 | конъюнкция | x1 и x2 |
F7 | дизъюнкция | x1 или x2 |
F6 | Сложение по модулю 2 | x1 неравнозначно x2 |
F8 | стрелка Пирса | ни x1, ни x2 |
F9 | эквивалентность | x1 равнозначно x2 |
F11 | импликация | если x2, то x1 |
F14 | штрих Шеффера | неверно, что x1 и x2 |
F2 | запрет по x2 | неверно, что если x1, то x2 |
F4 | запрет по x1 | неверно, что если x2, то x1 |
F13 | импликация | если x1, то x2 (x1 -> x2) |
В логических функциях переменные имеют всего два возможных значения, поэтому количество различных функций ограничено.
1.5. Кодирование информации в компьютере
1.5.1. Понятие кодирования
Одно из основных достоинств компьютера связано с тем, что он является универсальной машиной. Каждый, кто работал на компьютере, знает, что решение математических задач составляет далеко не единственный вариант его использования. Компьютеры могут воспроизводить музыку и видеоинформацию, они позволяют поддерживать видео- или аудио-конференции посредством Интернета, выполнять графическую обработку изображений и выполнять множество других функций. Составляя информационную модель объекта, решая различные задачи, мы должны определить, как представлять исходную информацию. Человек выражает свои мысли в виде предложений, составленных из слов используемого языка, в основе которого используется множество различных символов алфавита. Один и тот же набор цифровых символов может нести разное смысловое содержание. Например, множество цифр 1584456 может представлять длину объекта; расстояние между объектами; номер телефона, массу объекта, и т.п. Для представления информации могут использоваться различные коды. Для записи этих кодов необходимо знать определенные правила, то есть уметь кодировать. Для общения друг с другом мы используем код – алфавит русского языка и набор цифр. При разговоре этот код передается звуками, при письме – буквами и цифрами.
Для кодирования звуков при создании музыки композиторы используют ноты (7 основных символов) и другие специальные знаки. Кроме того, мы например, встречаемся с кодированием информации при переходе улицы посредством сигналов светофора и т.п. Кодировать информацию можно сигналами различной физической природы. Самым распространенным носителем информации пока является бумага, хотя тенденция идет к безбумажной технологии. Например, в компьютерах информация хранится на физических носителях (оперативная память, диски, регистры процессора), которые являются энергозависимыми или энергонезависимыми.
Таким образом, кодирование информации - это процесс представления определенного вида информации на носителе, например числовой, текстовой, графической, аудио, видео средствами используемого алфавита символов, а код – это набор условных обозначений для представления информации. В компьютере используются только два символа 0 и 1 для кодирования всех видов информации.
1.5.2. Кодирование числовой информации
Для представления чисел в компьютере используются два основных формата, один из которых применяется для кодирования целых чисел, а другой - для действительных чисел и называется представлением чисел в формате с плавающей точкой. Диапазон целых чисел в компьютере ограничен и зависит от разрядности памяти, используемой для их чисел. При этом разрядность обрабатываемых чисел может превышать разрядность самого процессора и используемой в нём памяти. В этом случае длинное число может занимать несколько ячеек памяти и обрабатываться группой команд процессора. При обработке все ячейки памяти, выделенные под многобайтное число, рассматриваются как одно число.
Целые числа. Различаютдва вида целых чисел: знаковые и беззнаковые. В беззнаковых числах минимально возможное число, которое можно записать двоичным кодом, равно 0, а максимальное число равняется 2n, где n – разрядность кода, например, для байта – это 255. Данные два числа определяют диапазон чисел, которые можно представить одним байтом. Для шестнадцатиразрядного кода этот диапазон соответствует 0 … 65535. В восьмиразрядном процессоре для хранения такого числа используется две ячейки памяти, расположенных в соседних адресах.
Второй вид двоичных чисел - это целые знаковые числа, в которых старший разряд используется для представления знака числа. В знаковом разряде нулем кодируется знак «+», а единицей - знак «-». В результате введения знакового разряда диапазон кодируемых чисел уменьшается. В случае двоичного восьмиразрядного знакового целого числа диапазон чисел, которые можно представить таким образом, соответствует: -128.. +127, а для шестнадцатиразрядного числа этот диапазон будет: -32768.. +32767. Для того, чтобы алгоритм обработки знаковых и беззнаковых чисел был единым математики предложили использовать специальный код, который получил название дополнительного двоичного кода. Для формирования дополнительного кода отрицательно числа необходимо инвертировать разряды кода кроме знакового и прибавить 1 к младшему разряду кода.
1.5.3. Представление вещественных чисел
Система вещественных чисел в математических вычислениях предполагается непрерывной и бесконечной, то есть не имеющей ограничений на диапазон и точность представления чисел. Однако в компьютерах числа хранятся в регистрах и ячейках памяти с ограниченным количеством разрядов. Поэтому система вещественных чисел, представляемых в компьютере, является дискретной и конечной.
Для обработки в компьютерах очень больших чисел, например, определяющих расстояние между удаленными объектами или очень маленьких чисел, используемых для определения объектов микромира, например, размеры электронов, пришлось бы использовать числа с очень большой разрядностью. Это не возможно практически или очень сложно с точки зрения последующей обработки представить их в компьютере из-за его ограниченной разрядности. Ограничения касаются как диапазона, так и точности представления чисел, так как диапазон машинных чисел является конечным, образуя подмножество системы вещественных чисел. Для вычислений с такими числами использование чисел с фиксированной запятой является неэффективным, поэтому для их записи была предложена следующая форма. Как известно, десятичное число 23,56 можно представить как: 0,2356 * 102, а десятичное число 0,00038 записывается как: 0,38 * 10-3 . В данном представлении дробная часть числа называется мантиссой, которая умножается на 10 в степени, соответствующей порядку числа. Такая форма записи называется записью числа с плавающей точкой. В общем случае число X с основанием системы счисления q можно записать в виде:
Х = m * q P,
где m – мантисса, представленная в виде правильной дроби (для двоичной системы счисления 0,5<=M <1), p – порядок (целое число в двоичной системе счисления), а q - основание системы счисления. Такая форма получила название нормализованного вещественного числа и включает знак числа, мантиссу, знак порядка и порядок. Таким образом, значащие цифры числа находятся в поле мантиссы, а значение порядка показывает реальное расположение двоичной точки в разрядах мантиссы, (поэтому и используется термин «плавающая точка»), а бит знака определяет знак числа.
В математическом процессоре персональных компьютеров (сопроцессор архитектуры Х87) для представления вещественных чисел используются три стандартных формата данных:
· одинарный формат- 32-разрядное нормализованное знаковое число, с 8-битным смещенным порядком и 24-битной мантиссой (старший бит мантиссы, равный 1, не хранится в памяти, и поэтому разрядность поля для хранения мантиссы равняется только 23 разрядам).
· двойной формат– это 64-битное нормализованное знаковое число, имеет 11-разрядный смещенный порядок и 53-битную мантиссу (аналогично старший бит мантиссы в явном виде не представлен, размер поля под мантиссу равен 52 разрядам).
· расширенный формат - это 80-битное знаковое число, имеет 15-битный порядок со смещением и 64-битную мантиссу, он позволяет хранить ненормализованные числа.
Сопроцессор использует такой формат действительного числа, чтобы обеспечить высокий диапазон представления чисел и высокую точность вычислений.
1.5.4. Кодирование текстовой информации
Символы для представления текста образуют алфавит, прописные и строчные буквы которого следуют в алфавитном порядке, цифры также располагаются упорядочено по возрастанию значений. Принцип кодирования алфавита состоит в том, что каждому символу алфавита сопоставляется определенное значение кода (целое число), что позволяет кодировать также и текстовую информацию.
С помощью одного байта можно закодировать 256 различных символов. достаточных для представления текстовой информации, включая строчные и прописные буквы как русского, так и латинского алфавитов, а также знаки препинания, графические символы, скобки и т.п. Для каждого символа клавиатуры определен десятичный код от 0 до 255, представленный в двоичной системе счисления от 00000000 до 11111111 соответственно. Таким образом, компьютер различает вводимые символы в соответствии их коду.
Кодирование информации посредством байтов определяется используемыми стандартами, в основе которых лежит код ASCII (American Standart Code for Information Interchange - американский стандартный код для обмена информацией). Данный код разработан в Американском Национальном Институте стандартов ANSI - American National Standarts Institute. Первоначальная версия этой кодировки (1963 г.) была доведена до рабочей версии в 1968 году как стандарт ANSIX3.4 под именем US-ASCII.
В системе кодирования ASCII используются две таблицы кодирования, называемые базовой и расширенной. Базовая таблица кодирования использует коды от 0 до 127, а расширенная таблица использует коды от 128 до 255:
· коды 0…31 используют фирмы – разработчики аппаратуры (ПК, принтеров для кодирования специальных символов), это управляющие коды;
· коды 32…127 кодируют латиницу, цифры, арифметические операции и другие символы;
· коды 128…255 используются каждой страной самостоятельно, и это приводит к множеству кодировок даже в одной стране.
С появлением графической среды Windows, фирма Microsoft разработала новую кодовую таблицу ANSI. В настоящее время существует много различных кодовых таблиц и по этой причине текст в одной системе кодирования, может некорректно представляться в другой системе. Наиболее распространенной системой кодирования является система MS Windows, сокращенно обозначаемый как CP1251 (Code Page - кодовая страница).
Универсальный код - Unicode
В 1991 году появился новый международный стандарт Unicode (Юникод – универсальный код), который использует для кодирования одного символа два байта и поэтому с его помощью можно закодировать 65536 различных символов.
Unicode включает существующие алфавиты стран мира, а также различные математические, химические и другие символы. Юнико́д является стандартом для кодирования символов и позволяет представить символы практически всех письменных языков. Стандарт предложен некоммерческой организацией «Консорциум Юникода» (Unicode Consortium), объединяющей крупнейшие IT-корпорации. Коды в стандарте Unicode разделены на несколько областей. Диапазон с кодами от 0 до 255 содержит символы набора ASCII – кодов.
Unicode использует 16бит для кодирования символов и общее количество символов, которые можно закодировать составляет 216 (65 536). Основные операционные системы поддерживают Unicode. Операционные системы Windows для кодирования имён файлов и других системных атрибутов используют кодировку двумя байтами. В настоящее время основные языкы программирования используют Unicode. Файлы, использующие Unicode, требуют больше памяти, однако с увеличением быстродействия компьютеров и сокращением стоимости оперативной памяти и жестких дисков указанная проблема не будет со временем являться важной. Например, кодировка Unicode используется в программных продуктах MS Word и MS Excel.
1.5.5. Кодирование графической информации
Специальный раздел информатики разрабатывает методы и средства обработки изображений и называется компьютерной графикой.
Компьютерные графические изображения можно классифицировать в зависимости от способа формирования изображения на: растровую, векторную и фрактальную компьютерную графику. Известна также графика 3D (3-х мерная), которая сочетает векторный и растровый способы кодирования изображений, успешно развивается область компьютерной графики – анимация.
Растровая графика
Растровые графические изображения представляют собой матрицу, состоящую из точек, которые называются пикселами (pixel - picture element). Каждый пикселю имеет уникальный код, определяющий цвет пикселя. Графическое изображении хранится в видеопамяти компьютера.
Для кодирования монохромного изображения достаточно 1 бита (значение 1 – белый цвет, а 0 – черный).
Для цветного дисплея пиксель должен представляться различными цветами и поэтому для кодирования, например 4-цветного изображения необходимо два бита на пиксель, например может использоваться следующее кодирование четырех цветов: 00 – черный, 01 – красный, 10 – зеленый, 11 – коричневый
При растровом кодировании, координаты каждой точки изображения и её параметры (яркость- от белой до чёрной) можно представить 8 – разрядным кодом, то есть 256 комбинациями (чёрно – белое изображение). При кодировании цветных изображений используется принцип разложения любого цвета на три составляющих (красный – Red, зеленый - Green, синий - Blue), представляемых сокращением RGB, то есть любой цвет – это композиция RGB. Если для кодирования яркости каждой из составляющих RGB использовать байт, то для одной точки нужно использовать 24 бита и говорят, что система обеспечивает различных цветов, что превышает 16.5 миллионов цветов и близко соответствует восприятию цветов человеческим глазом. И такой режим кодирования 24 битами цветной графики называют (True Color). Если использовать только 16 битов для кодирования всех точек, то такое кодирование (усеченное) называют режимом High Color. В настоящее время широко используется в компьютерах 32-битное кодирование.
Если обозначить количество различных цветов через К, а число разрядов видеопамяти для их кодирования через n (глубина цвета), то связать их можно следующей формулой: 2n = К.
Важная характеристика растровой графики – разрешение, определяемое числом точек на единицу длины и измеряемое количеством точек на дюйм (dpi – dots per inch). Она зависит от способа оцифровки, формата файла и других параметров. Например, расстояние между соседними точками экрана монитора: 0,18 – 0,22 мм для разрешений 1024х1280, 1600х1920.
В RGB-мониторах формирование различных цветов выполняется на основе композиции базовых цветов, соответственно: красный (Red), зеленый (Green) и синий(Blue). Таким образом, получается 8 основных комбинаций, приведенных в таблице:
Красный (R) | Зеленый (G) | Синий (B) | Цвет |
Черный | |||
Синий | |||
Зеленый | |||
Голубой | |||
Красный | |||
Розовый | |||
Коричневый | |||
Белый |
Как видно из таблицы, чтобы выполнить кодирования 8-цветного изображения необходимо иметь три бита в памяти для одного пикселя. Для представления палитры из четырех цветов необходимо использовать для кодирования одного пикселя 4 бит:. четвертый бит управляет яркостью трех цветов одновременно. Качество изображения определяет разрешающая способность монитора, определяемое количеством точек, из которых оно создается. Чем больше число строк растра и точек в каждой строке, тем будет более высокое качество изображение.
Векторная графика
Векторное графическое изображение представляет объект, который состоит из элементарных базовых объектов. Положение этих элементарных объектов определяется координатами точек и длиной радиуса. В векторной графике базовым элементом является не точка, а линия (path), описываемая функцией y = f (x), поэтому объем данных для кодирования значительно сокращается. Линия - это прямая (кривая) (второго порядка), (третьего порядка) определенного цвета, толщины, сплошная, пунктирная, замкнутые линии могут быть заполнены цветом или другими объектами и т.п. Таким образом, векторное изображение представляется набором простых объектов, а не точек и обрабатывается специализированными программами.
Векторное изображение является многослойным по сравнению с растровой графикой. Каждый элементарный объект векторного изображения (линия, окружность, прямоугольник и т.п.) располагается в собственном слое, пикселы которого устанавливаются независимо от других слоев. Каждый элементарный объект векторного изображения описывается специальным языком (математических уравнения линий, кривых, окружностей и т. п.). Более сложные объекты, такие как: различные геометрические фигуры, ломаные линии) представляются в виде множества элементарных графических объектов.