Векторная кодировка изображений



КОДИРОВАНИЕ ЧИСЕЛ

Для представления в памяти ЭВМ чисел, т.е. каких-то числовых значений, требуется определенный подход, не совпадающий с кодированием текста. При построении кода для чисел необходимо учитывать, что число – это не просто набор цифр, а какая-то вполне определенная величина, с которой можно производить какие-то действия (сравнение, арифметические операции, смена знака и проч.). Поэтому при кодировании чисел следует пользоваться кодом, который кодировал бы не формальную запись числа в десятичной (или иной другой) системе счисления, а реальное значение этого числа и определял бы правила арифметических операций и операций сравнения. Чтобы удовлетворить этим требованиям, приходится использовать сложное кодирование, но требование равномерности кода остается неизменным

Числа бывают целые и вещественные (с дробной частью), со знаком и без. Каждая категория чисел кодируется по своим правилам.

Кодирование целых чисел без знака

Натуральные (целые положительные) числа кодируются записью значения числа в двоичной системе счисления. В зависимости от длины двоичной записи закодированного числа различают короткие целые беззнаковые (формат byte) и целые беззнаковые (формат word) числа. Первые (короткие) числа кодируются байтом (длина двоичного кода – 8 бит), и диапазон представимости чисел в этом формате в двоичной системе от 00000000 до 11111111, или в шестнадцатиричной системе от 00 до FF, а в десятичной от 0 до 255. При кодировании десятичных чисел код получается сложным, а при кодировании шестнадцатиричных – прямым, поэтому программисты в расчетах часто используют шестнадцатиричную систему. Код формата word имеет длину 2 байта (16 бит), и, соответственно, многократно возрастает диапазон представимости: от 0000 до FFFF в шестнадцатиричной системе (от 0 до 65536 в десятичной).

Такая кодировка позволяет не только записать число в память компьютера, но и определить правила операций сравнения и арифметических операций (в соответствии с этими правилами в двоичной системе счисления).

Кодирование целых чисел со знаком

Для кодирования целых знаковых чисел применяются три формата – короткое целое (формат Shortint), целое (формат Integer) и длинное целое (формат Longint). В первом случае величина числа задается семью битами, а значение старшего бита определяет знак числа (0 – положительное, 1 – отрицательное). Например, в этом формате код 01101011 означает число +6В (в шестнадцатиричной системе). Однако, код 11101011 не означает, как можно подумать, код –6В, так как для кодирования отрицательных чисел применяется дополнительный код. Он строится следующим образом:

¨ находится восьмиразрядное двоичное представление абсолютной величины числа;

¨ найденный код инвертируется, т.е. в нем нули заменяются на единицы и наоборот;

¨ к полученному коду арифметически добавляется единица.

Например, процесс получения дополнительного кода числа –6В таков:

-6В16 → 01101011 → 10010100 → 10010101.

Использование дополнительного кода облегчает организацию арифметических действий в процессоре (который, как правило, не имеет даже аппаратно реализованной операции вычитания – все удается свести к сложению чисел).

Обратная процедура – восстановление значения числа по дополнительному коду – происходит по тем же правилам, но в обратном порядке. Диапазон представимости чисел в формате Shortint – от –80 до +7F в шестнадцатиричной системе (от –128 до 127 в десятичной).

В формате Integer код имеет длину 2 байта, соответственно старший бит определяет знак, а остальные 15 – абсолютное значение числа. Правила построения дополнительного кода остаются те же, а диапазон представимости чисел в этом формате – от –8000 до +7FFF в шестнадцатиричной системе (от –32768 до +32767 в десятичной).

В формате Longint код имеет длину 4 байта, поэтому диапазон представимости чисел от –80000000 до +7FFFFFFF в шестнадцатиричной системе (от –2147483648 до 2147483647 в десятичной).

Кодирование вещественных чисел

Под вещественными числами в информатике понимаются числа с дробной частью (в том числе и равной нулю), т.е. числа, для записи которых, помимо привычного алфавита цифр (двоичных, восьмеричных, десятичных, шестнадцатиричных) используется еще один знак – точка (разделитель). Любое вещественное число в любой системе счисления может быть представлено в виде позиционной дроби – конечной или бесконечной.

Для кодирования вещественных чисел требуется специальный подход, отличный от подхода к кодированию целых чисел. Это связано с тем, что на любом отрезке числовой оси целых чисел ограниченное количество, а вещественных - неограниченное. Поэтому, в силу того, что двоичный код любой длины содержит ограниченное количество комбинаций, невозможно каждому вещественному числу поставить в соответствие свой двоичный код. Вещественные числа кодируются с некоторой точностью. Точность с точки зрения информатики – количество знаков после разделителя, которые способен распознать и обработать компьютер. Так, если кодирование происходит с точностью 4 знака, то числа 2,35756 и 2,35757 будут закодированы одинаково.

Кодирование вещественных чисел разбивается на два этапа. На первом этапе вещественное число преобразуется к нормализованному виду, а на втором – число в нормализованном виде кодируется в двоичный код.

Нормализованный вид числа получается следующим образом. Разделитель перемещается по числу (влево или вправо) так, чтобы слева от него оставалась только одна значащая (не ноль) цифра, а все остальные цифры оставались бы справа от разделителя. При этом происходит умножение числа на 10 (основание системы счисления) в степени n, где n – количество позиций, на которые переместился разделитель. Если разделитель двигался влево, то n – отрицательное, а если вправо - положительное. Чтобы вернуться к исходному значению числа, необходимо умножить полученное число с перемещенным разделителем на 10 в степени –n.

Примеры:

a) 123,456 = 1,23456*102 (десятичная система счисления);

b) -0,00123456 = -1,23456*10-3 (десятичная система счисления);

c) 1011,11011 = 1,01111011*1011 (двоичная система счисления; 102=210; 112=310;

d) -0,000000000000С = -С*10-D (шестнадцатиричная система счисления; 1016=1610; D16=1310.

Часть числа с разделителем в нормализованном виде называется мантисса (в примерах 1,23456; 1,01111011; С), а показатель степени 10 называется порядок (в примерах 2; -3; 11; -D). Таким образом, любое вещественное число в любой системе счисления может быть приведено к нормализованному виду, т.е. представлено в виде мантиссы (вещественного числа с одной позицией в целой части) и порядка (целого числа со знаком). Понятие «точность» в применении к нормализованным вещественным числам применяется только к мантиссе, т.е. число 123456 в нормализованном виде запишется 1,235456*105, и при точности 4 знака запишется как 1,2345*105, т.е. 123450.

В дальнейшем рассматриваем только вещественные числа, записанные в десятичной системе счисления.

Кодирование нормализованных вещественных чисел происходит отдельно для мантиссы и отдельно для порядка. Мантисса кодируется как целое знаковое число с абсолютной величиной в диапазоне от 10...0 до 99...9, где нулей – n штук (n – точность кодирования), а девяток - n+1. Так, если кодирование происходит с точностью 12 знаков, то диапазон кодирования модуля мантиссы – от 1000000000000 до 9999999999999. Порядок кодируется как обычное целое знаковое число.

В зависимости от количества битов, которые отводятся под кодирование мантиссы и порядка, вещественные числа могут быть закодированы в разных диапазонах с разной точностью.

Примеры:

a) формат 33бит (мантисса) + 7бит (порядок) = 40бит (5байт).

Модуль мантиссы: 33бит – 1бит (под знак) = 32бит; позволяет кодировать целые беззнаковые числа в диапазоне от 0 до 4294967296 (232), т.е. поддерживается диапазон от 10000000 до 999999999, т.е. с точностью 8 знаков. Порядок: 7бит – 1бит (под знак) = 6бит, т.е. диапазон представления порядка от –64 (26) до +63 (26-1). Такой формат называется Real.

b) формат 56бит (мантисса) + 8бит (порядок) = 64бит (8байт).

Модуль мантиссы: 56бит – 1бит = 55бит, позволяет кодировать целые беззнаковые числа в диапазоне от 0 до 36028797018963968 (255), т.е. с точностью 1000000000000000 до 9999999999999999 – 15 знаков. Порядок может быть в диапазоне от –128 (27) до 127 (27-1). Такой формат называется Double – вещественные числа двойной точности.

3.5 КОДИРОВАНИЕ ИЗОБРАЖЕНИЙ.

Существует два способа реализации построения изображений на экране дисплея и хранения их в памяти – векторный (функциональный) и растровый.

Векторная кодировка изображений

В этом случае изображение разбивается на базовые элементы, каждый из которых описывается в виде математических уравнений кривых. Такие изображения называются векторными, они легко и быстро строятся на дисплее, хорошо поддаются обработке (изменение размеров изображения и др.), занимают немного места в памяти. Недостатком векторных изображений, из-за которого они имеют ограниченное применение, является невозможность отображения с их помощью мелких деталей изображения и ограниченность цветовой гаммы. Эти недостатки не дают возможность использования векторного кодирования при получении высококачественных цветных изображений, и векторное кодирование используется в тех случаях, когда не требуется четкой прорисовки деталей изображения, но требуется иметь возможность быстрой обработки изображения. Пример векторных изображений – шрифты TrueType, картинки, геометрические фигуры.


Дата добавления: 2021-07-19; просмотров: 104; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!