Пример
ASCII-код символа A = 6510 = 4116 = 010001112;
ASCII-код символа G = 7110 = 4716 = 010001112;
ASCII-код символа Z = 9010 = 5A16 = 010110102.
ASCII-код символа C = 6710 = 4316 = 011001112
Unicode-код символа C = 6710 = 00000000011001112.
Цифровое представление вещественных чисел
Для того, чтобы представить вещественное число в виде набора целых чисел, его необходимо привести к нормализованной форме:
x = M*2P;
где M - называется мантиссой (дробной частью), а P - экспонентой (порядком).
здесь S – признак знака. Поэтому необходимо также определить, какой размер памяти будет отведён под все три части нормализованного числа.
Далее должны быть определены правила (алгоритмы), по которым будут выполняться арифметические операции с нормализованными вещественными числами. Совокупность таких алгоритмов, а также правил представления чисел в нормализованной форме называется арифметикой плавающих чисел [floatingpointnumber].
Поскольку размер памяти, отводимый под мантиссу и порядок, ограничен, то вещественные числа представляются с некоторой погрешностью (точность десятичных цифр) и имеют ограниченный диапазон изменения. Чем больше размер памяти для плавающего числа, тем точнее можно представить вещественное число. Поэтому для пользователя основными характеристиками арифметики плавающего числа являются длина числа (размер), измеряемая в битах, и точность представления числа. По точности представления вещественных чисел различают плавающие числа одинарной и двойной точности [singleanddoubleprecision].
Пример
Рассмотрим принцип цифрового представления вещественного числа 15,375. Пусть под мантиссу отведено 5 десятичных разрядов, а под порядок – 2 разряда. Представим число в нормализованной форме: 15,375 » 1,9219*23. Так как в нормализованной форме первая цифра всегда равна единице, то её можно не хранить. Тогда число будет представлено в виде целого числа 9219003 с относительной погрешностью не более 10-4, то есть число верных десятичных чисел равно 4. В памяти ЭВМ это число будет храниться в двоичной форме, причём можно легко подсчитать, что для хранения такого числа потребуется 27 бит. Максимальное число, которое можно представить таким образом - 9999999=1,99999*1099, а минимальное, не равное нулю - 0000100=0,00001. Если предусмотреть один бит для хранения знака порядка, то минимально представляемое число будет равно 00001-99, то есть 0,00001*10-99.
При попытке выйти за допустимый диапазон ЭВМ выдаст сообщение о переполнении (underflow или overflow).
Конкретные характеристики арифметики различны для разных стандартов. Для ПЭВМ наиболее распространённым является IEEE-стандарт (IEEE-754-1985) [InstituteofElectricalandElectronicEngineers], согласно которому вещественные числа представляются в трёх основных формах (см. табл. 1.2).
Таблица 2. Данные с плавающей точкой по IEEE-стандарту
Тип | Размер,бит | Диапазон изменения чиселмаксимум минимум | Точность десятичн. цифр | Машинноеe | |
single | 32 | 3.4*10-38 | 3.4*1038 | 6 | 1,192*10-7 |
double | 64 | 1.7*10-308 | 1.7*10308 | 15 | 2,221*10-16 |
long double | 80 | 3.4*10-4932 | 3.4*104932 | 19 | 1,084*10-19 |
Источник: [5].
Здесь нужно заметить, что характеристики плавающего числа двойной точности будут зависеть от той арифметики, которая используется на конкретной ЭВМ.
Пример
Запишем число 15,375 в двоичном виде:
15.375 = 1111.0112 1.111011*2112
Тогда согласно стандарту IEEE число будет представляться:
single
15,375 = 0 1000.0001.0 111.0110.0000.0000.0000.00002 = 4176000016
long double
15,375 = 0 1000.0000.00010. 1110.1100.0000.0000. … 00002 = 402ЕС0000000000016.
Источник: [5].
Особенности плавающей арифметики могут существенно влиять на результаты расчётов, вплоть до того, что погрешность может сделать невозможным получение какого-либо результата вообще, поэтому знание деталей реализации арифметики плавающих чисел является необходимым для программистов.
Пример
Существует особая характеристика плавающей арифметики – машинное эпсилон. Это число, которое определяется как
.Для плавающего числа единичной точности (по IEEE стандарту):
.Это значит, если написать программу на языке BASIC:
a=1.2
b=1.e-7
printa+b
то результат, который выдаст программа, будет равен 1.2.
Поэтому программы, учитывающие особенности плавающей арифметики могут трактовать все числа, меньшие, чем машинное эпсилон, практически равными нулю.
Цифровое представление изображений
Под изображением будем понимать прямоугольную область, закрашенную непрерывно изменяющимся цветом. Поэтому для представления изображений в целых числах необходимо отдельно дискретизировать прямоугольную область и цвет.
Для описания области она разбивается на множество точечных элементов – пикселов [pixel]. Само множество называется растром [bitmap, dotmatrix, raster] (см. рис. 1.3), а изображения, которые формируются на основе растра, называются растровыми.
Число пикселов называется разрешением [resolution]. Часто встречаются значения 640х480, 800х600, 1024х768, 1280х1024. Каждый пиксел нумеруется, начиная с нуля слева направо и сверху вниз.
Для представления цвета используются цветовые модели. Цветовая модель [colormodel] это правило, по которому может быть вычислен цвет. Самая простая цветовая модель – битовая. В ней для описания цвета каждого пиксела (чёрного или белого) используется всего один бит. Для представления полноцветных изображений используются несколько более сложных моделей. Известно, что любой цвет может быть представлен как сумма трёх основных цветов: красного, зелёного и синего. Если интенсивность каждого цвета представить числом, то любой цвет будет выражаться через набор из трёх чисел. Так определяется наиболее известная цветовая RGB-модель. На каждое число отводится один байт. Так можно представить 224 цвета, то есть примерно 16,7 млн. цветов. Белый цвет в этой модели представляется как (1,1,1), чёрный – (0,0,0), красный (1,0,0), синий (0,0,1). Жёлтый цвет является комбинацией красного и зелёного и потому представляется как (1,1,0).
Пример
Пусть имеется изображение вида
0000000000000000
0000000000000000
0000111110000000
0000100010000000
0000100010000000
0000111110000000
0000000000000000
0000000000000000
В шестнадцатеричном виде этот двоичный набор будет выглядеть так:
00 00 00 00 0F 80 08 80 08 80 0F 80 00 00 00 00
Всего для хранения такого изображения потребуется 16 байт.
Данное изображение легко преобразовать в RGB-модель. Достаточно заменить все нули тройками (1,1,1), а все единицы - тройками (0,0,0). Тогда получим следующее шестнадцатеричное представление изображения:
FFFFFFFFFFFFFFFFFFFFFFFFFFF0 00 1FFFFF
FFF1 FF 1FFFFFFFF1 FF 1FFFFFFFF0 00 1FFFFF
FF FF FF FF FF FF FF FF FF FF FF FF
Для хранения такого изображения потребуется 48 байт.
Цветовая модель RGB [Red-Green-Blue] была стандартизирована в 1931 г. и впервые использована в цветном телевидении. Модель RGB является аддитивной моделью, то есть цвет получается в результате сложения базовых цветов. Существуют и другие цветовые модели, которые для ряда задач оказываются более предпочтительными, чем RGB-модель. Например, для представления цвета в принтере используется субтрактивная CMY-модель [Cyan-Magenta-Yellow], цвет в которой получается в результате вычитания базовых цветов из белого цвета. Белому цвету в этой модели соответствует (0,0,0), чёрному - (1,1,1), голубому - (1,0,0), сиреневому - (0,1,0), жёлтому - (0,0,1). В цветовой модели HSV [Hue-Saturation-Value] цвет представляется через цвет, насыщенность и значение, а в модели HLS [Hue-Lightness-Saturation] через оттенок, яркость и насыщенность. Современные графические редакторы, как правило, могут работать с несколькими цветовыми моделями.
Звук можно описать в виде совокупности синусоидальных волн определённых частоты и амплитуды. Частота волны определяет высоту звукового тона, амплитуда – громкость звука. Частота измеряется в герцах (Гц [Hz]). Диапазон слышимости для человека составляет от 20 Гц до 17000 Гц (или 17 кГц).
Задача цифрового представления звука, таким образом, сводится к задаче описания синусоидальной кривой. Принцип такого представления изображён на рис. 1.5.
Каждой дискретной выборке присваивается целое число – значение амплитуды. Количество выборок в секунду называется частотой выборки [samplingrate]. Количество возможных значений амплитуды называется точностью выборки [samplingsize]. Таким образом, звуковая волна представляется в виде ступенчатой кривой. Ширина ступеньки тем меньше, чем больше частота выборки, а высота ступеньки тем меньше, чем больше точность выборки.