Системы счисления. Неизбежный этап кодирования аналогового сигнала в совокупность импульсов (то есть в цифровую форму) требует перехода на двоичную систему счисления.
Неизбежный этап кодирования аналогового сигнала в совокупность импульсов (то есть в цифровую форму) требует перехода на двоичную систему счисления.
Код- это совокупность знаков (символов, цифр, букв, пиктограмм и т. п.) и система определенных правил, с помощью которых информация представляется (кодируется) в виде набора знаков в форме, удобной для передачи, обработки и хранения (или скрытия).
Если перейти от реальности, к цифровым технологиям, то понятно, что в компьютере никаких цветков, никаких животных, никаких материальных носителей кодовой информации нет и быть не может. В компьютерных технологиях все виды информации (например, изображения) кодируются только цифрами, или, точнее, числами.
Известно, что для записи произвольного числа прибегают к помощи систем счисления.
Счисление (система счисления) - это способ представления любых чисел с помощью определенного количества знаков (цифр) по позиционному принципу.
Количество знаков, которые обычно именуются цифрами, всегда ограничено. Чтобы преодолеть это ограничение, используется особый способ записи, который называется позиционным.
Позиционная система счисления состоит в использовании ограниченного числа цифр, зато позиция каждой цифры в числе обеспечивает значимость (вес) этой цифры. Позиция цифры на математическом языке называется разрядом.
Основание позиционной системы счисления - это количество различных знаков или символов (цифр), используемых для отображения чисел в данной системе.
Выбор количества цифр диктуется какими-либо потребностями реальной жизни, науки или удобствами обработки. Исторически этот выбор определялся привычками или традициями конкретного народа. Наиболее привычной для нас является десятичная система счисления, благодаря наличию десяти пальцев рук.
В компьютерных технологиях нет ничего, кроме импульсов, а, следовательно, для внутреннего машинного языка достаточно только двух знаков. Каждый импульс представляет собой один из двух видов уровней тока (условно их можно определить как "наличие" или "отсутствие" тока). Было решено обозначать наличие тока, "нулем", а отсутствие сигнала - "единицей". А затем, используя позиционный метод и определенные последовательности знаков, обеспечивается возможность записи любых чисел. Такая система получила название двоичной системы счисления. Ее еще называют бинарной, от английского слова "binary", т.е. "двоичный".
Выбирая импульсный способ передачи информации, который, безусловно, обладает выигрышными достоинствами (выше уже упоминались помехоустойчивость и возможность проверки результата передачи), мы, тем не менее, должны платить за эти достоинства тем, что обрекаем себя на ограничение в использовании знаков.
Составим таблицу чисел, которые "состоят" из цифр "0" и "1".
С нуля начинается числовая ось натуральных целых чисел. Последующие целые числа получаются с помощью последовательного прибавления единицы к предыдущему числу.
Таблица 1
Десятичная система | Двоичная система |
0 1 2 3 4 5 6 7 8 | 1000 и т.д. |
Таким образом, мы получаем возможность передавать любое десятичное число двоичными числами, а, следовательно, импульсным способом, т. е. определенным сочетанием импульсов (в этом состоит требование компьютерных технологий).
Заметно, что двоичные числа гораздо длиннее десятичных чисел. Для того чтобы двоичные числа было легче воспринимать и отображать, их сжимают в восьмеричную систему счисления, о которой также необходимо сказать несколько слов.
Если мы обращаемся к восьмеричной системе счисления, то это означает, что можно использовать гораздо больше цифр, чем это принято в двоичной, но меньше, чем в десятичной, а именно можно оперировать восемью цифрами: 0, 1, 2, 3, 4, 5, 6, 7 - и не более. Десятичное число "8" становится восьмеричным числом "10" ("восьмеричной десяткой"). Число "9" будет восьмеричным числом "11", число "10" - восьмеричным числом "12". И так далее.
Но даже такие числа все-таки мало экономны, по крайней мере, их разрядность не уступает десятичной системе, поэтому в компьютерных технологиях применяется еще одна система счисления, которая называется шестнадцатеричной.
Для этой системы в свое время специалистам необходимо было придумать какие-нибудь новые знаки. Они пошли по простому пути - взяли первые буквы латинского алфавита в качестве цифр. И десятичное число "10" стали обозначать латинской буквой "А" (точнее, "цифрой А"). Соответственно, дальше идут цифры "В", "С", "D", "Е" и "F".
Представим числа в нескольких интересующих нас системах счисления, но не все числа, а только те, которые являются "круглыми" в одной из систем, таблица 2.
Таблица 2
Двоичная | Восьмеричная | Десятичная | Шестнадцатеричная |
10 = 21 | |||
100 = 22 | |||
10 = 101 | А | ||
1000 = 23 | 10 = 81 | ||
10 000 = 24 | 10 = 161 | ||
100 000 = 25 | |||
1000000 = 26 | 100 = 82 | ||
100 = 102 | |||
10000000 = 27 | |||
100000000 = 28 | 100 = 162 | ||
1000000000 = 29 | 1000 = 83 |
Формально в математике есть величины меньше двух, но в философии и в реальной жизни минимальной ячейкой является двоичная система.
Например, нельзя рисовать черным по черному (единичность), а требуется зрительный контраст (двоичность): в графическом произведении темное пятно имеет смысл, если окружено светлым пространством. Любая информация возникает только как результат противопоставления (оппозиционных отношений).
Поэтому и первичный элементарный алфавит должен состоять, как минимум, из двух элементов. Это фундаментальное свойство нашло свое отражение в понятии бита.
Бит - это минимальное количество информации, составляющее выбор одного из двух возможных вариантов.
"Бит" - слово искусственное и представляет собой сокращение от английских слов binary digit, что означает парадоксальное сочетание "двоичная единица".
Можно абстрагироваться от качественного содержания информации, и считать ее не как конкретные элементы (звук, текст или цвет), всякий раз вспоминая о том, какой была конкретная информация - а просто как количество, независимо от ее содержания. В таком случае мы получаем колоссальную свободу в формальных операциях.
И таким же образом, как в математике рассматривается количество безотносительно качества, так же с точки зрения теории информации исключается качественное содержание информации и учитывается только количественное.
Обнаруживается, что двоичная система счисления, которая обсуждалась выше, идеально совпадает с понятием бита в теории информации. Сколько передается нолей или единиц - столько передается битов информации, т.е. одновременно ее учитывая.
Обратим свое внимание на ряд десятичных чисел, которые равны "круглым" двоичным числам. В этот ряд входят следующие десятичные числа: "2", "4", "8", "16", "32", "64", "128", "256", "512" и "1024". Все эти числа представляют ряд последовательных степеней числа "2". Каждое из названных чисел активно используется в компьютерных технологиях.
Разрядность двоичного числа - это количество знакомест (разрядов) или количество битов, заранее отведенных для записи числа.
Десятичное число "2" может быть записано различными способами в зависимости от разрядности двоичного числа: как "10", если разрядность равна двум; как "0010", если разрядность равна четырем; как "00000010", если разрядность равна восьми.
Для получения большего количества кодов, разумеется, единственный путь состоит в увеличении разрядности двоичного числа (его удлинении). Это заставляет вспомнить и применить позиционный метод записи чисел.
Если рассматривать самый общий случай, как это принято в математике, то можно утверждать, что, используя небольшое конечное количество цифр (не менее двух) и позиционный метод записи, можно получить бесконечное количество чисел. Но у двоичных чисел, поскольку они применяются в компьютерных технологиях, есть одна особенность: двоичные числа, как правило, формируются с фиксированной разрядностью. Такая совокупность разрядов получила название "слов".
Двоичное слово- последовательность битов, рассматриваемых как единое целое, имеющая определенное смысловое значение (в соответствующем кодовом алфавите).
В слове, равном одному байту, — восемь двоичных разрядов, и десятичное число "2" записывается в двоичной системе счисления следующим образом: 00000010. Слово может быть равно двум и более байтам, поэтому то же число может получить и такой вид: 00000000 00000010. Это означает, что если число занимает меньше значимых разрядов, чем отведено для его записи, как в данном примере, то все предыдущие разряды заполняются нулями. И поскольку эти нули занимают старшие разряды, они действительно не имеют значения.
Кстати, по этой причине хранение информации на диске не является оптимальным: информация хранится кластерами, даже если в ней записан один бит - все равно весь этот кластер заполняется.
Обратимся снова к таблице 2 - с информационной точки зрения.
Сначала необходимо рассчитать объем этой таблицы, исходя из количества двоичных разрядов.
Эту задачу по расчету количества кодов стоит обсудить подробнее, поэтому с целью упрощения моделируем ситуацию кодирования чисел с помощью электрических лампочек. Каждая лампочка представляет собой разряд двоичного числа.
Сколько отдельных кодов можно смоделировать с помощью одной лампочки? Совершенно очевидно, что она может иметь только два состояния: "горит" или "не горит". И других состояний быть не может.
Теперь усложняем задачу: используем два разряда - две лампочки. Сколько сигналов, или кодов, мы можем с их помощью обеспечить? Это зависит от того, сколько комбинаций (битовых "слов") можно составить.
Рассмотрим все возможные комбинации.
Первый сигнал: обе лампочки выключены.
Второй сигнал: включена только одна лампочка слева.
Третий сигнал: включена только одна лампочка справа.
Четвертый сигнал: обе лампочки включены.
Следовательно, когда приходится использовать две лампочки (или два двоичных разряда), всегда получаются четыре кода, рисунок 3.
Рисунок 3
Рассмотрим более сложный вариант из трех лампочек, или трех разрядов - это иногда вызывает у людей ошибочные мнения. Обычно чаще всего называют числа "6" или "9" (видимо, по аналогии: "три плюс три" или "три в квадрате"). Для преодоления ошибки составим таблицу, представив горящую лампочку "единицей", а не горящую - "нулем", таблица 3.
Таблица 3
Номер по порядку | Двоичный код | Номер по порядку | Двоичный код |
В результате получилось восемь кодов, которые представляют диапазон от "все лампочки погашены" до "все лампочки горят".
Итак, каждое последующее количество кодов больше предыдущего в два раза. Это означает, что количество разрядов является степенью при основании "двойки". Если значение степени равняется количеству разрядов, то общее количество кодов можно вычислить по чрезвычайно простой формуле:
N=2n,
где N - это количество кодов, а n - количество двоичных разрядов.
С помощью приведенной формулы всегда можно определить, сколько потенциальных кодов получается в случае использования определенного количества разрядов. Отсюда можно поставить обратную задачу: как рассчитать количество разрядов, если известно количество кодов, которое необходимо обеспечить для кодирования известной совокупности данных.
Количество разрядов можно вычислить по формуле, обратной рассмотренной ранее (N = 2n). Для степенной зависимости обратной является логарифмическая функция:
п = log2N,
где n - это количество двоичных разрядов, а N - количество кодов.
В действительности человек формирует системные представления об окружающем мире. Причем, очень многие элементы этой системы являются знаками. Знаки бывают естественными и искусственными.
Естественные системы знаков связаны с закономерностями, которые открыты и описаны физикой, химией, биологией, геологией и другими точными науками, а также дополнены эмпирическими наблюдениями о природе.
Искусственные системы знаков целиком создаются людьми. Скажем, к искусственным знакам можно отнести знаки письменности, пиктограммы, сигналы дорожного движения и многое другое.
Кодовый алфавит - это минимальный перечень элементов. Такое определение допускает, что в общем случае алфавит может содержать самые произвольные, причем, никак не связанные друг с другом элементы.
Если строго определены элементы кодового алфавита и разрядность слов, получаемых с их помощью, то количество всех кодов можно вычислить, а, следовательно, составить их перечень в форме кодовой таблицы.
Таким образом, в кодовой таблице представлено определенное количество строк и только два столбца:
в одном столбце указаны цифровые (в нашем случае двоичные) коды -"слова", как сочетания элементов алфавита, расположенные в определенной последовательности;
в другом столбце - их значения (нецифровой смысл, т. е. значения кодов).
Кодовая таблица - это совокупность цифровых (двоичных) кодов и их значений.
На самом деле это - только половина кодовой таблицы. О второй половине кодовой таблицы поговорим позже.
Первая проблема, которую предстоит решить, заключается в том, чтобы определить количество строк, т. е. сначала надо задаться количеством разрядов, как это выяснилось в предыдущем разделе. Прежде всего, следует располагать предварительной информацией о количестве значений, которое предстоит кодировать. Если кодируется только два значения, например "да" и "нет" или "черное" и "белое". Т. е. такую информацию, которая состоит из двух сообщений, то потребуется всего один разряд (один бит), а соответствующая кодовая таблица будет состоять из двух строк, таблица 4.
Таблица 4
Двоичные коды | Значения кодов |
Да | |
Нет |
Простота этой таблицы определяется тем, что в ней используются только элементы кодового алфавита. Если значений, которые надо кодировать, оказывается больше, чем два, то в этом случае элементы алфавита составляются в "слова", длина которых определяется разрядностью.
Например, если для кодирования требуется добавить значение, которое иногда присутствует в анкетах "Не знаю!", то одного разряда окажется недостаточно. Мы уже эту ситуацию обсуждали и знаем, что необходимо задействовать два разряда.
Код "11" обязательно присутствует в таблице, хотя и не используется в данном случае, но, может быть, этому коду в другой ситуации найдется применение.
Таблица 5
Двоичные коды | Значения кодов |
Да | |
Нет | |
Не знаю | |
Не используется |
Длина кодовой таблицы может быть произвольной, т. к. она определяется объемом информации, которая требует кодирования, хотя может быть ограничена возможностями технической реализации.
Следует отметить, что пользователям, которые применяют готовые технологии (программные приложения, общепринятые форматы и режимы), такими расчетами заниматься не приходится, поскольку давно разработаны стандартные кодовые таблицы. Вместе с тем, их ограничения, как правило, вызывают неприятие у лиц, которые не знакомы с особенностями логики, лежащей в основе компьютерных технологий. Например, художнику может быть совершенно непонятно, почему в компьютерных технологиях принято 256 градаций тона (подробнее об этом будет рассказано в разделе Растровая графика), а, например, не 7 или 100.
Теперь рассмотрим качественную сторону кодирования, каким образом поставить в соответствие каждому коду (или каждому двоичному числу) определенные значения из самых разных областей знания. По сути дела это и есть основополагающая задача при разработке кодовой таблицы - поставить в соответствие друг другу список двоичных чисел (они имеют вполне стандартный вид) и список значений (выделение и сортировка которых чаще всего носят нетривиальный характер).
Самый общий принцип заполнения столбца кодовой таблицы, который называется "значения", можно сформулировать так: он заполняется произвольной информацией в произвольном порядке. Значения кодовой таблицы определяются логикой предметной области.
В принципе можно принять любую систему, даже с полным отсутствием какой бы то ни было очевидной логики. Другой вопрос, будет ли такая кодовая таблица рациональной, удобной и универсальной.
Предположим, что необходимо закодировать четыре ахроматических цвета: белый, черный, темно-серый, светло-серый. Каким образом станем действовать? С точки зрения левого (числового) столбца кодовой таблицы проблема решается просто: для четырех значений требуется четыре кода, а для формирования четырех двоичных кодов (двоичных чисел) идеально подходят два разряда (диапазон от "00" до "11").
Кодирование - это операция отождествления двоичных чисел с дискретными значениями какой-либо предметной области.
Совершенно не очевидно, какой код правильнее присвоить, например, черному цвету. Логика присвоения носит произвольный характер, она не вызвана какими-либо однозначными закономерностями. В качестве примера, видимо, вполне рационально присвоить коды, начиная с белого и заканчивая черным. В системе RGB черному цвету присваивается нулевое значение. И там есть определенная логика, о которой речь пойдет позже.
Дата добавления: 2015-04-29; просмотров: 1064;