Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
5.1 Проблемы представления данных
Для физического представления чисел необходимы элементы, способные находиться в одном из нескольких устойчивых состояний.
Если для построения ЭВМ выбрана десятичная система счисления, то таких состояний должно быть десять. Для восьмеричной системы счисления таких состояний должно быть 8, для шестнадцатеричной — 16 и т.д. Число состояний всегда должно быть равно основанию системы счисления.
Естественно, такое количество состояний вызывает трудности при их реализации.
В середине сороковых годов прошлого столетия группа математиков, в которую входил и фон Нейман, предложила использовать для представления информации в ЭВМ двоичную систему счисления.
Для двоичной системы счисления устойчивых состояний должно быть два (грубо говоря — выключатель включен (этому состоянию логически соответствует 1) и выключатель выключен (этому состоянию логически соответствует 0).
Совершенно очевидно, что наиболее простыми с точки зрения технической реализации являются так называемые двухпозиционные элементы, способные находиться в одном из двух устойчивых состояний, например: электромагнитное реле замкнуто или разомкнуто, ферромагнитная поверхность намагничена или размагничена и т.д.
Простота технической реализации двухпозиционных элементов обеспечила наибольшее распространение в ЭВМ двоичной системы счисления.
Кроме того, в информатике используется также восьмеричная и шестнадцатеричная системы счисления. Основания этих систем соответствуют целым степеням 2, поэтому для них исключительно просты правила перевода в двоичную систему счисления и наоборот.
Любая информация представляется в ЭВМ в виде двоичных кодов. Отдельные элементы двоичного кода, принимающие значение 0 или 1 называются разрядами или битами.
n |
Хранит информацию блок машины называемой памятью. Условно блок памяти изобразим прямоугольником. Память делится на байты. Наименьшей неделимой единицей информации, которой можно присвоить адрес является байт(в современных ЭВМ под байт отводят 8 разрядов). Номера начинаются с нуля и заканчиваются некоторым числом «n». Значение n зависит от типа ЭВМ.
Память хранит:
n данные (так называемая область данных)
n программы (область программ)
n служебную информацию (она называется системной, и область также называется системной, таких областей в памяти две).
Память «начинается» системной областью и «заканчивается» системной областью.
Итак, память подразделяется на ячейки(разрядные сетки) обратиться к которым можно по их адресам.
Каждый байт памяти подразделяется на разряды или биты.
Условно разрядную сетку можно изобразить в виде узкого прямоугольника с делениями для разрядов (битов).
M | |||||||
.............. |
Разрядная сетка
Каждому разряду (биту) соответствует один физический элемент. Логически это 1, либо 0.
Представление числовой информации в памяти ЭВМ неразрывно связано с таким понятием современных проблемно – ориентированных языков, как тип данных. Современные языки достаточно строго отслеживают тип переменных, которые используются в программе. Тип переменной определяет возможный набор значений данной переменной, размер её внутреннего представления и множество операций, которые могут выполняться над переменной. Для числовых значений существенным моментом является диапазон допустимых значений.
Понятие типа данных носит двойственный характер. С точки зрения размерности микропроцессор аппаратно поддерживает следующие основные типы данных:
Байт — восемь последовательно расположенных битов, пронумерованных от 0 до 7, при этом бит 0 является самым младшим значащим битом.
Двойной байт (слово в 16/32-битной архитектуре) — последовательность из двух байт, имеющих последовательные адреса. Размер слова — 16 бит; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15‑й бит — старшим байтом. Микропроцессоры Intel имеют важную особенность — младший байт всегда хранится по меньшему адресу. Адресом двойного байта считается адрес его младшего байта. Адрес старшего байта может быть использован для доступа к старшей половине двойного байта.
Полуслово — последовательность из четырех байт (32 бита), расположенных по последовательным адресам. Нумерация этих бит производится от 0 до 31. Двойной байт, содержащий нулевой бит, называется младшим двойным байтом, а двойной байт, содержащий 31-й бит — старшим двойным байтом. Младший двойной байт хранится по меньшему адресу. Адресом полуслова считается адрес его младшего байта. Адрес старшего двойного байта может быть использован для доступа к старшей половине полуслова.
Слово (тип, резрядность которого соответствует разрядности архитектуры) — последовательность из восьми байт, имеющих последовательные адреса. Размер слова — 64 бита; биты в слове нумеруются от 0 до 63. Полуслово, содержащее нулевой бит, называется младшим полусловом, а полуслово, содержащее 63-й бит — старшим полусловом. Микропроцессоры Intel имеют важную особенность — младшее полуслово всегда хранится по меньшему адресу. Адресом слова считается адрес его младшего байта. Адрес старшего полуслова может быть использован для доступа к старшей половине слова.
Двойное слово — последовательность из шестнадцати байт (128 бита), расположенных по последовательным адресам. Нумерация этих бит производится от 0 до 127. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 127-й бит, — старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова. Адрес старшего слова может быть использован для доступа к старшей половине двойного слова.
Кроме трактовки типов данных с точки зрения их разрядности, микропроцессор на уровне команд поддерживает логическую интерпретацию этих типов.
Целый тип без знака — двоичное значение без знака, размером 8, 16, 32, 64 или 128бит.
Целый тип со знаком — двоичное значение со знаком, размером 8, 16, 32, 64 или 128бит. Знак в этом двоичном числе содержится в старшем бите.
Числовые диапазоны для этого типа данных следующие:
Действительный тип кодирует действительное число в экспоненциальной форме:
Закодированное число вычисляется по формуле:
N = мантиса · 2 порядок;
Следует отметить, что помимо разрядности, определённой типом процессора необходимо учитывать и язык программирования (конкретно возможности компилятора). Например, язык программирования Турбо Паскаль поддерживает тип данных real, для этого типа данных отведено 48 разрядов.
Повторим, что минимальной адресуемой единицей информации, обрабатываемой в ЭВМ, является байт. Байт состоит из восьми двоичных разрядов.
Рассмотрим подробно представление чисел в памяти ЭВМ.
5.2 Формы представления чисел в ЭВМ.
Для представления чисел в ЭВМ применяются две различные формы: с фиксированной точкой (запятой) - для целых чисел и с плавающей точкой (запятой) для действительных чисел.
Целые числа могут быть представлены со знаком и без знака.
Возьмем разрядную сетку из 8 бит (т.е. байт) и попробуем разобраться, как представляются целые числа без знака. Самое маленькое число, которое можно поместить в один байт без знака — это ноль.
Число 0 без знака.
Самое большое число, которое можно представить в одном байте без знака — это (в двоичном виде) 111111112
Переведем это число в десятичную систему счисления (для простоты счета переведем сначала в 8-ную).
Итак, в один байт без знака можно поместить максимальное десятичное число 255.
Аналогично можно вычислить максимальное число, которое можно поместить в два байта (т.е. 16 бит).
11111111111111112=6553510.
Для чисел со знаком самый левый разряд отводится под знак. Для положительного числа этот разряд равен 0, для отрицательного — 1.
Число +12 в 8-битной разрядной сетке будет записано следующим образом: 1210=11002.
Знак ‘+’
Обратите внимание на расположение чисел в разрядной сетке: между знаковым разрядом и первым значащим разрядом числа располагаются нули.
Вычислим максимальное положительное число, которое помещается в 8 бит со знаком, т.е. под число отводится 7 бит.
знак
11111112=1778=1.82+7.81+1.80=64+56=127.
Теперь вычислим максимальное положительное число, которое помещается в 16-ти разрядную сетку со знаком.
знак
1111111111111112=7FFF16=716.163+F16.161+F16.161+F16.160=7.163+15.162+15.161+15.1=32767.
Представление отрицательных чисел существенно отличается от представления положительных чисел. Предварительно рассмотрим некоторые понятия, а именно введем определение прямого, обратного и дополнительного кодов.
5.3 Прямой, обратный и дополнительный коды.
1) Положительные числа.
Для положительных чисел прямой код равен обратному коду и равен дополнительному коду.
Прямой код Xпр двоичного числа X содержит двоичные цифровые разряды, слева записывается знак числа.
Пример.
Разместить в разрядной сетке из восьми разрядов положительное число 97.
9710=11000012.
Это же число разместим в разрядной сетке из 16 разрядов.
2) Отрицательные числа.
Отрицательные числа хранятся в памяти ЭВМ либо в обратном, либо в дополнительном кодах.
Обратный код Xобр двоичного отрицательного числа X получается следующим образом: в знаковый разряд числа записывается единица, в цифровых разрядах нули заменяются единицами, а единицы — нулями.
Запишем число -4 в обратном коде в 8-ми разрядной сетке. Двоичный код модуля исходного числа равен 1002. Обратный код получается инверсией каждого разряда двоичного кода модуля исходного числа, записанного в 8-ми разрядную сетку.
Двоичный код модуля исходного числа равен 00000100. Выполним инверсию каждого разряда.
Обратный код числа -4 записывается следующим образом:
Знаковый разряд
Дополнительный код Xдоп отрицательного числа X получается из обратного кода Xобр путем прибавления единицы к самому правому разряду (он называется младшим).
Итак, Xдоп=Xобр + 00000001, т.е.
1 | |||||||
(знак.разряд) | |||||||
(сложение производим в двоичной системе счисления 12+12=102)
1 1 1 1 1 1 0 0
2726252423222120
Теперь приведем полученное число в десятичную систему счисления
128+64+32+16+8+4=252
Мы получили, что дополнительный код числа –4 в десятичной системе счисления равен 252. Сложим ê-4ê+252=256. 256=28. Количество разрядов сетки было равно 8. Число 252 «дополнило» число ç–4ç до 28 = 1000000010.
Теперь сложим два двоичных числа – двоичный код числа ç-4ç в 8-разрядной сетке и дополнительный код числа –4:
11111100
1 000000002 мы получили 28
Запишем общее правило получения дополнительного кода некоторого целого числа х.
x, x>=0
Xдоп =
2k - |x|, x<0, где k – количество разрядов сетки.
Есть еще одно очень простое правило получения дополнительного кода некоторого отрицательного числа.
Для получения дополнительного кода, необходимо инвертировать все разряды прямого кода модуля исходного числа начиная с самого левого разряда исключая последнюю единицу и стоящие за ней нули.
00000 100 прямой код ç-4ç
11111 100
инверсия разрядов
Определим наименьшее отрицательное число, которое можно положить в один байт со знаком. Прямой код такого числа равен -1111111. Самый левый разряд отведён под знак числа. Найдём дополнительный код числа А. Адоп = 10000000.
Следовательно, самое маленькое отрицательное число, которое можно записать в 8-ми разрядной сетке — 27 = -128. Рассуждая таким же образом, получим, что для 16-ти разрядной сетки самое маленькое отрицательное число равно 215 или-32768.
Прямой, обратный и дополнительный коды введены для упрощения операции вычитания(или алгебраического сложения). При помощи обратного и дополнительного кодов операция вычитания сводится к операции арифметического сложения. При этом операнды представляются либо в обратном, либо в дополнительном коде. Рассмотрим конкретные примеры. Для упрощения будем рассматривать четырехразрядную сетку.
а) Вычислить х-у, где х=+6,у=-3, при этом результат является положительным числом.
Х-у=6+(-3)
хпр=хобр=хдоп=0.110; уобр=1.100; удоп=1.101
Сложение в обратных кодах:
хпр=0.110
+
уобр=1.100
10.010
+
_____ 1
0.011
В данном случае единица, не поместившаяся в разрядную сетку (единица переноса из знакового разряда), циклически прибавляется к правому разряду суммы кодов. Ответом является положительное двоичное число 0.0112=310.
Сложение в дополнительных кодах:
Хпр=0.100
+
удоп=1.101
10.011
¿
__________
0.011
При сложении в дополнительных кодах левая единица, вышедшая за границы разрядной сетки отбрасывается. Результатом является положительное число 310.
б) Рассмотрим второй случай: числа имеют разные знаки, но в результате получаем отрицательное число.
х=-610=-1102 и у=+310=+0112.
Хобр=1.001, хдоп=1.010, упр=уобр=удоп=0.011.
Сложение в обратных кодах:
хобр=1.001
+
упр= 0.011
1.100
В данном случае получен обратный код алгебраической суммы, необходимо перейти от обратного кода к прямому:
(х+у)обр=1.100, следовательно, (х+у)пр=-0112=-310(единица в знаковом разряде дает минус, все остальные разряды инвертируются).
Сложение в дополнительных кодах:
Хдоп=1.010
+
упр=0.011
1.101
Ответ представлен в дополнительном коде, необходимо получить прямой код алгебраической суммы.
(1.101)доп ® (1.100)обр ® -0112=-310.
в) Третий случай: оба числа отрицательные.
Х=-6=-1102, у=-3=-0112.
Хобр=1.001, хдоп=1.010,
Уобр=1.100, удоп=1.101.
Рассмотрим алгебраическое сложение в дополнительных кодах:
1.010
+
1.101
10.111
В данном случае имеет место так называемое отрицательное переполнение, так как возник перенос только из знакового разряда суммы. Следовательно, результат получился отрицательный и превышающий предельно допустимое значение для данной разрядной сетки. Сдвинем полученный результат на 1 разряд вправо, тогда(х+у)доп=(1.0111)доп. Перейдем от дополнительного кода к прямому:
(1.0111)доп ® (1.0110)обр ® (1.1001)пр = -910.
Следует отметить, что в процессе выполнения расчетов на ЭВМ может образоваться как «положительный», так и «отрицательный» ноль, причем только в дополнительном коде он имеет единственное представление. Действительно,
(+0)пр=0.00…00; (-0)пр = 1.00…00,
в обратном коде
(+0)обр=0.00…00; (-0)обр = 1.11…11,
в дополнительном коде
(+0)доп=0.00…00; (-0)доп = 0.00…00.
Следует также иметь в виду, для разрядной сетки данной длины дополнительным кодом представляется на единицу больше отрицательных чисел, чем положительных.
По этим причинам в ЭВМ для представления отрицательных чисел чаще используется дополнительный код.
И последнее очень существенное замечание:
При сложении может возникнуть ситуация, когда старший разряд суммы не помещается в отведенной под результат разрядной сетке и он «захватывает» знаковый разряд, естественно значение суммы искажается.
Пример. Пусть дана 4-х разрядная сетка со знаком, в которой должен разместиться результат от суммирования двух положительных чисел х=5 и у=7.
хпр = 0.101, упр = 0.111
0.101
+
0.111
1.100
Так как знаковый разряд равен единице, то результат воспринимается как дополнительный код и, если попробовать вывести значение суммы, допустим на экран, процессор перейдет к прямому коду:
(1.100)доп ® (1.011)обр ® -1002=-410.
Посмотрим, что получится, если под результат отвести шесть разрядов:
0.00101
+
0.00111
0.01100
(х+у)пр=(0.01100)пр=+12.
Сумма двух чисел вычислена верно.
Выполнить самостоятельно:
1. Найти дополнительные коды для чисел:-45, 123, -98, -А516, -111, -778. Формат представления данных один байт со знаком.
2. Найти дополнительные коды для чисел: -11100018, 234, -456, -АС0916, -32324, СС7816, -110012,. Формат представления данных два байта со знаком.
5.4 Представление чисел с плавающей точкой.
Математическая запись числа две целых четыре сотых выглядит так 2,04 но возможна и такая запись 0,204×10, или такая 20,4×10-1, или такая 0,0204×102... Этот ряд можно продолжать сколь угодно долго. На что вы обратили внимание? - запятая перемещается («плавает») влево или вправо, и, чтобы не изменить значение числа, мы умножаем его на 10 в отрицательной или положительной степени.
Для представления вещественных чисел в памяти ЭВМ используется формат с плавающей точкой. При этом необходимо помнить, что система вещественных чисел представимых в ЭВМ является дискретной и конечной.
В общем случае любое число N, представляемое в форме с плавающей точкой, является произведением двух сомножителей: .
m — будем называть мантиссой числа (модуль целой части мантиссы изменяется в диапазоне от 1 до S-1 (включая эти числа), где S- основание системы счисления),
p — целочисленный порядок,
S ¾ основание системы счисления.
Различают нормализованную и экспоненциальную формы записи числа. Если мантисса является правильной дробью, у которой первая цифра после точки отлична от нуля, то число называется нормализованным.
При представлении числа в экспоненциальной форме обязательно присутствует целая часть, содержащая не более одной цифры отличной от нуля, фактически эта форма представления совпадает со стандартной математической формой записи числа.
Вещественное число в ПЭВМ представлено в экспоненциальной форме.
Следовательно, при представлении чисел с плавающей точкой необходимо записать в разрядной сетке ЭВМ со своими знаками мантиссу и порядок . Знак числа при этом совпадает со знаком мантиссы. Запишем число 314.6789 в экспоненциальной форме:314.6789= 3.1467890000E+2. Число разрядов, выделенных для изображения порядков, определяет диапазон представимых в ЭВМ чисел с плавающей точкой.
Кроме того, этот диапазон зависит также от основания S принятой системы счисления.
Значение произвольного числа вещественного типа представляется в ПЭВМ лишь с некоторой конечной точностью, которая зависит от внутреннего формата вещественного числа, точность представления чисел повышается с увеличением числа разрядов мантиссы.
Для того, чтобы упростить операции над порядками их сводят к действиям над целыми положительными числами путем использования так называемого смещенного порядка, который всегда положителен. смещенный порядок получается путем прибавления к порядку р некоторого целого положительного числа, значение которого зависит от конкретного формата данных.
Десятичная точка подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение смещается влево или вправо в зависимости от двоичного порядка.
Рассмотрим представление чисел в разрядной сетке длиной 4 байта (так называемая одинарная точность) для ПЭВМ типа РС. Изобразим разрядную сетку, состоящую из 32 разрядов и посмотрим, как эти разряды распределены.
0 1 2 3 4 5 6 7 8 … 31
… |
знак мантиссы порядок мантисса
Пусть необходимо представить число –13,75 в разрядной сетке с одинарной точностью. Для этого необходимо выполнить следующие действия:
1. перевести число в двоичную систему счисления;
2. представить его в экспоненциальной форме;
3. получить исходный порядок и мантиссу;
4. получить смещенный порядок.
1) 13.7510=1101.112
75/100=3/4=3/22=0.112
2) Представим двоичное число 1101.11 в экспоненциальной форме 1101.11=1.10111E+3.
3) Исходный порядок равен 3.
Следует отметить, что целая часть двоичного числа представленного в экспоненциальной форме, всегда равна 1, поэтому в целях экономии разрядов (а следовательно увеличения диапазона представления чисел)целая часть числа не записывается в разрядную сетку.
4) Вычислим смещенный порядок (в формате с одинарной точностью к исходному порядку добавляется число 127)
Pсм=3+127=130=128+2=27+2=100000002+102=1000 00102
Рсм=100000102
Мантисса=.101112
Знак числа положительный, следовательно, самый левый разряд равен 0.
0 10000010 10111000000000000000000
знак порядок мантисса
представим полученное число в шестнадцатеричной системе счисления
0100 0001 0101 1100 0000 0000 0000 0000
Итак, мы получили шестнадцатеричное число 415С0000.
Решим обратную задачу.
Значение переменной А Представлено в формате с плавающей точкой в шестнадцатеричной системе счисления А=ВЕ200000. Тип переменной А-single для языка Паскаль. Найти десятичное значение переменной А.
Для решения обратной задачи необходимо выполнить следующие действия:
1) Перевести шестнадцатеричное число в двоичную систему счисления.
2) Выделить знак мантиссы(знак мантиссы совпадает со знаком числа).
3) Выделить смещенный порядок.
4) Вычислить исходный порядок.
5) Записать число, не забыв указать его целую часть, в экспоненциальной форме.
6) Перевести число из экспоненциальной формы в обычную форму записи.
7) Перевести число из двоичной системы счисления в десятичную.
Выполним перечисленные действия.
ВЕ200000=1011 1110 0010 0…0000
1 01111100 0100…0
знак порядок мантисса
Число отрицательное так как левый разряд равен 1.
Вычислим исходный порядок:
Р=Р-127=1111100-127=124-127=-3.
Запишем искомое число в экспоненциальной форме в двоичной системе счисления:
А=-1.01Е-3. Не забывайте указывать целую часть.
Представим искомое число в обычной форме записи в двоичной системе счисления:
А=-1.01Е-3=-0.001012=-0.2816=-0.15625.
Операция алгебраического сложения чисел, представленных в форме с плавающей точкой, производится несколько сложнее, чем для чисел, представленных в форме с фиксированной точкой. При выполнении ее сначала выравниваются порядки слагаемых, В результате сравнения порядков порядок меньшего по модулю числа принимается равным порядку большего, а его мантисса сдвигается вправо на число шестнадцатеричных разрядов, равное разности порядков.
В процессе сдвига мантиссы меньшего слагаемого происходит потеря младших разрядов, что вносит определенную погрешность в результат выполнения данной операции.
После выравнивания порядков производится алгебраическое сложение мантисс.
Подведём некоторые итоги по представлению числовой информации в памяти ЭВМ.
Представление числовой информации в цифровом автомате, как правило, влечёт за собой появление погрешностей, величина которых зависит от формы представления чисел и от длины разрядной сетки автомата.
Необходимо помнить о том, что для записи числа в любой форме представления отводитс я конечное число разрядов. Для целых чисел это обстоятельство привело к понятию наибольшего и наименьшего целого числа. Однако для каждого целого числа, не превышающего по модулю наибольшего, имеется ровно одно представление в машинном коде и, если не происходит переполнения, результат выполнения операции над целыми числами будет точным., так как дискретные множества исходных чисел однозначно отображаются на дискретное множество результатов.
Другое дело – вещественные числа. Вещественные числа образуют непрерывное множество. В памяти ЭВМ вещественные числа заменяются их кодами, которые образуют конечное дискретное множество, поэтому:
· строгие отношения между числами непрерывного множества превращаются в нестрогие для их компьютерных кодов;
· результаты вычислений содержат неизбежную погрешность, так как код вещественного числа в памяти ЭВМ является приблизительным представителем многих чисел из интервала, оценка погрешности самостоятельная и далеко не тривиальная задача;
· наряду с понятием наибольшего вещественного числа появляется понятие наименьшего числа или машинного нуля. Конкретное значение числа, которое воспринимается в вычислительной машине как машинный ноль, зависит от типа данных используемых в том или ином языке программирования.
Выполнить самостоятельно:
1) Найти представление десятичного числа А в шестнадцатеричной системе счисления в формате с плавающей точкой. Тип числа single.
А=-357.2265626; А=-0.203125; А=998.46875;
А=–657.4375; А=998.8125; А=-905,34375; А=897.5625
А=637.65625; А=56.53125; А=-4.78125.
2) Значение переменной А представлено в формате с плавающей точкой в шестнадцатеричной системе счисления. Тип переменной А-single для языка Паскаль. Найти десятичное значение переменной А.
А=C455C200; A=43D09400; A=443F9000; A=C2FF8000;
А=44071С00; A=435D2000; А=C401F000; А= С403ЕС00;
A=C3D87400; A=C3D40000; A=C411FA00; A=3F700000.
5.5 Кодирование текстовой и графической информации.
Теория кодирования информации является одним из разделов теоретической информатики. В задачи данного курса не входят вопросы теории кодирования. Коротко и упрощённо рассмотрим кодирование текстовой и графической информации.
Кодирование текстовой информации.
Кодирование текстовой информации заключается в том, что каждому текстовому символу ставится в соответствие код - целое положительное число. В зависимости от числа разрядов, отведённых под кодирование символов, все виды кодировок делятся на две группы: 8 – разрядные и 16 – разрядные. Для каждого вида кодировки символы вместе с их кодами образуют кодировочную таблицу. В кодировочной таблице первая половина кодов отводится под кодирование управляющих символов, а также цифр и букв английского алфавита. Оставшаяся часть под кодирование символов национального алфавита.
К 8 – разрядным кодировкам, включающим в себя кодировку символов русского алфавита, относятся: ASCII, ДКОИ-8, Win 1251.
16 – разрядная кодировка Unicode позволяет представить 216 различных символов. В кодовой таблице Unicode присутствуют символы всех современных национальных языков. Символы первых 128 кодов совпадают с таблицей кодов ASCII.
Кодирование изображений.
Рассмотрим растровое кодирование изображений.
Введём обозначения:
К – количество разных цветов, используемых при кодировании изображения;
n – количество битов, необходимое для кодирования цвета одной точки изображения. К и n связаны следующим образом:
К = 2n.
Пользуясь этой формулой, можно рассчитать, сколько битов необходимо для кодирования цвета одной точки, если известно количество разных цветов, с помощью которых может быть представлено изображение:
n = log2K
Количество битов, необходимое для хранения одной точки изображения, называется глубиной цвета.
Окраска одной точки экрана формируется с помощью трёх базовых цветов: красного, зелёного, синего. Эти три цвета являются основой модели RGB. С их помощью можно получить 23 разных цветов. В данном случае для кодирования каждого из трёх базовых цветов достаточно одного бита. Однако каждый базовый цвет характеризуется не только его наличием, но и интенсивностью. Яркость каждого цвета кодируется восьмиразрядным двоичным числом, т.е. глубина цвета равна 8. Следовательно, число оттенков одного базового цвета равно 28. Это означает, что из трёх базовых цветов можно получить (256)3 =
16 777 216 цветов и их оттенков. Информация о каждом пикселе в видеопамяти займёт
n = 8 × 3 = 24 бита = 3 байта.
Таким образом, для хранения одного образа экрана потребуется объём памяти, равный произведению ширины экрана на высоту экрана и на глубину цвета. Ширина и высота задаются в пикселах.
В общем случае объём памяти, необходимый для хранения растрового изображения, рассчитывается по формуле:
V = W × H×n (битов),
где W – ширина изображения в точках;
H - высота изображения в точках;
V – объём памяти, необходимый для хранения растрового изображения.
Дата публикования: 2014-11-04; Прочитано: 2533 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!