Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Глава 5. Представление данных в памяти ЭВМ



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.054 с)...