Представление данных в памяти...

Post on 24-Sep-2020

7 views 0 download

Transcript of Представление данных в памяти...

ПРЕДСТАВЛЕНИЕ

ДАННЫХ В ПАМЯТИ ЭВМ Лектор

к.т.н., доцент

Азарченков Андрей Анатольевич

Кодирование информации Язык – система кодирования информации

Азбука – слова языка

Чем более универсальна система кодирования, тем больше

видов информации можно представить с ее помощью

Двоичное кодирование

0 1

нет тока есть ток

нет поля есть поле

Двоичное кодирование

22=4 0 0 0 1 1 0 1 1

разряд

Элементарная ячейка памяти

адреса

байтов

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

Память ЭВМ состоит из множества ячеек (разрядов),

каждый из которых может находится в одном из двух

состояний (вкл/ выкл; намагничено/ размагничено; 0/ 1)

𝑘 − 1 − й разряд 0 − й разряд

ячейка памяти из 𝑘 разрядов

Системы счисления

Различают следующие типы систем счисления:

• Позиционные (арабская);

• Не позиционные (римская).

В римской системе счисления используются следующие

символы: Один - I, пять - V, десять - X, сто - С, тысяча -

М и т.д.

В арабской системе счисления: 0,1, 2, 3, 4, 5, 6, 7, 8, 9 –

десятичная система счисления

В десятичной системе число может быть представлено

в виде полинома:

123,45 = 100 + 20 + 3 + 0,4 + 0,05 =

= 1 ∙ 102 + 2 ∙ 101 + 3 ∙ 100 + 4 ∙ 10−1 + 5 ∙ 10−2

Системы счисления

В общем виде представление числа в q-ичной системе

счисления представлено формулой:

𝑋 𝑞 = 𝑥𝑛−1 ∙ 𝑞𝑛−1 + 𝑥𝑛−2 ∙ 𝑞𝑛−2 + ⋯+ 𝑥1 ∙ 𝑞1 + 𝑥0 ∙ 𝑞0 +

+ 𝑥−1 ∙ 𝑞−1 +𝑥−2∙ 𝑞−2 + ⋯+ 𝑥−𝑚 ∙ 𝑞−𝑚.

Запись числа формируется по правилу:

𝑋 𝑞 = 𝑥𝑛−1, 𝑥𝑛−2 , … , 𝑥1 , 𝑥0, 𝑥−1, 𝑥−2, … , 𝑥−𝑚.

Длина записи числа зависит от системы в которой это

число представлено

231 10 = 11100111 2 = 347 8 = 𝐸7 16

Системы счисления

• Таблица соответствия чисел в разных системах

счисления

Десятич

ная

Двоична

я

Восьмерич

ная

Шестнадцатерич

ная

0 0 0 0

1 1 1 1

2 10 2 2

3 11 3 3

4 100 4 4

5 101 5 5

6 110 6 6

7 111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

15 1111 17 F

Системы счисления

• Пример. Перевести число из восьмеричной системы в

десятичную.

347 8 = 3 ∙ 82 + 4 ∙ 81 + 7 ∙ 80 = 3 ∙ 64 + 4 ∙ 8 + 7 = 231 10 .

Пример. Перевести число из шестнадцатеричной

системы в десятичную.

𝐸7 16 = 𝐸 ∙ 161 + 7 ∙ 160 = 14 ∙ 161 + 7 ∙ 160 = 224 + 7

= 231 10

Правила перевода чисел из десятичной

системы в двоичную

Перевод целой части:

• 115 10 = 1110011 2

Системы счисления

Системы счисления

Правила перевода чисел из десятичной системы в

двоичную

Перевод целой части:

• 0,47 10 ≈ 0,0111 2

Системы счисления

Примеры перевода дробной части

76

2

52 1

1

0 88

2

44

2

36

2

0

1

72

2

0

,

0 32

04

8

36

8

2

7

88

8

0

,

16

36

16

5

(С16)

76

16

0

,

12

Системы счисления

Пример. Перевести число 23,125 из десятичной системы

в двоичную.

Ответ: 23,12510 = 10111,0012.

1 0

2 2 1

5 1

11 1

23 2

2

2

1 0

5

2

125

2

0

0

25

2

0

,

Системы счисления

Системы счисления

Системы счисления

Пример. Перевести число из двоичной системы в

десятичную.

11100111,1101 2 = 1 ∙ 27 + 1 ∙ 26 + 1 ∙ 25 + 0 ∙ 24 + 0 ∙ 23 +

+1 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 + 1 ∙ 2−1 + 1 ∙ 2−2 + 0 ∙ 2−3 + 1 ∙ 2−4 =

128 + 64 + 32 + 4 + 2 + 1 + 0,5 + 0,25 + 0,0625 = 231,825 10 .

Системы счисления

Пример. Перевести число из двоичной системы в

восьмеричную.

11100111,11012 = 011 100 111,110 100 =

= 0 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 ∙ 82 + 1 ∙ 22 + 0 ∙ 21 + 0 ∙ 20 ∙ 81

+ 1 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 ∙ 80 + 1 ∙ 22 +∙ 21 + 0 ∙ 20 ∙ 8−1 +

+ 1 ∙ 22 + 0 ∙ 21 + 0 ∙ 20 ∙ 8−2 =

= 3 ∙ 82 + 4 ∙ 81 +7 ∙ 80 +6 ∙ 8−1 +4 ∙ 8−2= 347,64 8

Системы счисления

Пример. Перевести число из двоичной системы в

шестнадцатеричную.

1110 0111, 1101 2 = 1 ∙ 23 + 1 ∙ 22 + 1 ∙ 21 + 0 ∙ 20 ∙ 161 +

+ 0 ∙ 23 + 1 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 ∙ 160 +

+ 1 ∙ 24 + 1 ∙ 23 + 0 ∙ 21 + 1 ∙ 20 ∙ 16−1 =

= 14 ∙ 161 + 7 ∙ 160 + 13 ∙ 16−1 = 𝐸7,𝐷 16 .

Системы счисления

Системы счисления называются кратными, если

выполняется соотношение: S = RN, где S, R – основания

систем счисления, N – степень кратности (целое число: 2, 3 ).

Для перевода числа из системы счисления R (с меньшим

основанием) в кратную ей систему счисления S (с большим

основанием) необходимо, двигаясь от десятичной точки

влево и вправо, разбить число на группы по N разрядов,

дополняя при необходимости нулями крайние левую и правую

группы. Затем каждую группу заменяют соответствующей

цифрой из системы счисления S.

Системы счисления

Пример. Перевести число 1101111001,11012 в восьмеричную и

шестнадцатеричную систему счисления.

1 5 7 1 6 4

001 101 111 001 , 110 100 = 1571,648

7 F B 9 C

0111 1111 1011 , 1001 1100 = 7FB,9C16

Системы счисления

Для перевода чисел из системы счисления S (с большим

основанием) в кратную ей систему счисления R (с меньшим

основанием) достаточно заменить каждую цифру этого числа

соответствующим числом из системы счисления R, при этом

отбрасывают незначащие нули в старших (00512) и младших

(15,124000) разрядах.

3 0 5 , 4 8 =11 000 101, 12

011 000 101 100

7 B 2 E 16 =11 110 110 010, 1112

0111 1011 0010 1110

Системы счисления

Рассмотренный способ часто применяется при переводе

восьмеричных и шестнадцатеричных чисел в двоичную

систему счисления. Достаточно каждую цифру заменить

эквивалентной ей двоичной триадой (тройкой цифр) или

тетрадой (четверкой цифр).

5 3 7 1

537,18 = 101 011 111, 0012 ;

1 A 3 F

1A3,F16 = 1 1010 0011, 11112

Арифметические операции в двоичной

системе счисления

Сложение

Сложение

10000000101+ 11100010110111001010

Перевод первого слагаемого в десятичную систему счисления.

10000000101 2 = 1 ∙ 210 + 1 ∙ 22 + 1 ∙ 20 = 1024 + 4 + 1 = 1029 10 .

Перевод второго слагаемого в десятичную систему счисления.

1110001012 = 1 ∙ 28 + 1 ∙ 27 + 1 ∙ 26 + 1 ∙ 22 + 1 ∙ 20 =

= 256 + 128 + 64 + 4 + 1 = 453 10 .

Перевод суммы в десятичную систему счисления.

10111001010 2 = 1 ∙ 210 + 1 ∙ 28 + 1 ∙ 27 + 1 ∙ 26 + 1 ∙ 23 + 1 ∙ 21=

= 1024 + 256 + 128 + 64 + 8 + 2 = 1482 10 .

Проверка в десятичной системе счисления.

1029 10 + 453 10 = 1482 10 .

Вычитание

1100000011−101010111 110101011

Умножение

100111 × 1000111 100111 + 100111 100111 000000 000000 000000100111

101011010001

Деление

Представление целых чисел

1. Двоично-десятичное представление

2. Представление в прямом коде

3. Представление в дополнительном коде

Число -128 -127 -52 -0

Прямой

код

1000 0000 0111 1111 0011 0100 0000 0000

Обратный

код

0111 1111 1000 0000 1100 1011 1111 1111

Доп-й

код

1000 0000 1000 0001 1100 1100 0000 0000

Представление целых чисел

Пример. Получить десятичное значение числа по его дополнительному коду 10010111 2 .

1. Прежде всего, отметим, что задано отрицательное число, так как в старшем разряде стоит 1;

• Из дополнительного кода вычтем 1: 10010111 − 1 =10010110 (обратный код);

• Инвертируем полученный код: 01101001 (получили модуль отрицательного числа);

• Переведем в десятичную систему счисления: 01101001 2 = 1 ∙ 26 + 1 ∙ 25 + 1 ∙ 23 + 1 ∙ 20 = = 64 + 32 + 8 = 105;

• Записать число со знаком «-» -105.

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

Представление в формате с фиксированной запятой

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

M × 10p

где 1 <= M < 10 (мантисса), p — целое (порядок).

120100000 = 1,201 × 108

120100000 = 1,201 × 108 = 0,1201 × 109 = 12,01 × 107

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

Форматы представления вещественных чисел

Точность Одинарн

ая

Двойная Расширен

ная

Размер (байты) 4 8 10

Обозначение полей S-E-M S-E-M S-E-I-M

Размеры полей (бит) 1-8-23 1-11-52 1-15-1-63

Смещение 127 1023 32766

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

1 10000000111 0011100001010000000000000000000000000000000000000000

63 62..52 51..0

Пример. Представить число -312,3125(10) в формат с

плавающей запятой с двойной точностью.

В формате с двойной точностью порядок занимает 11 бит

(211=2048(10) с учетом цифры 0 и симметричного распределения

положительных и отрицательных диапазонов (2048-2)|2=1023) и

имеет диапазон от 2-1023 до 21023, поэтому смещение равно

1023(10) = 1111111111(2)

Перевод в двоичную систему счисления:

-312,3125=100111000,0101.

Нормализация:

100111000,0101=1,001110000101∙28.

Вычисление смещения:

8+1023=1031=10000000111(2).

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

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

Пример. Получить десятичное представление числа заданного в формате с двойной точностью по его коду:

0011111111101100011000000000000000000000000000000000000000000000

Заданное число состоит из 64 разрядов, тогда в памяти ЭВМ его распределение будет выглядеть следующим образом:

0 01111111110 11000110000000000000000000000000000000000000000

00000

63 62..52 51..0

Это код положительного числа, поскольку в разряде с

номером 63 записан нуль.

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

Продолжение примера

• Порядок этого числа:

01111111110 2 = 1022 10

• Степень числа:

1022 − 1023 = − 1.

• Число в двоичной форме:

1,1100011 ∙ 2−1 = 0,11100011 2 .

• В десятичной системе

0,11100011 2 = 0.88671875 10 .

Особенности арифметических

операций в памяти ЭВМ Выполнить сложение 100 10 и 51 10 в знаковом

восьмиразрядном представлении.

В этом представлении 100 10 = 01100100 2 и

51 2 = 00110011 2 .

При сложении этих чисел получим 10010111 2 .

Самая левая единица (знаковый разряд) указывает на

то, что в 8 разрядах записано отрицательное число. Так

как отрицательные числа представляются в

дополнительном коде, то после перевода в десятичное

представление получим -105. Таким образом, в

восьмиразрядной знаковой арифметике 100+51=-105.

Кодирование текстовой информации

Код символа - уникальное беззнаковое целое двоичное

число, поставленное в соответствие некоторому

символу.

Алфавит - совокупность вводимых и отображаемых

символов.

Для хранения кода символа в наиболее

распространенных системах кодирования отведен

1 байт=8 бит.

28=256 символов

Текстовая (символьная) строка - это конечная

последовательность символов.

Длина текстовой строки - это количество символов в

ней.

Представление символьных данных

Представление звуковых данных

Представление звуковых данных

Высокое качество воспроизведения получается в

формате лазерного аудиодиска при следующих

параметрах оцифровки: частота дискретизации — 44,1

кГц, квантование — 16 бит, т.е. 𝑁 = 216.

Таким образом, 1 с стереозвука займет 2байт ∙44100байт с ∙ 2кан ∙ 1с = 1776400 байт дисковой

памяти. Качество звука при этом получается очень

высоким.

Представление графических данных

Модель RGB.

Законы смешения цветов.

• закон трехмерности — любой цвет может быть представлен комбинацией трех основных цветов;

• закон непрерывности — к любому цвету можно подобрать бесконечно близкий;

• закон аддитивности — цвет смеси зависит от яркости составляющих цветов.

Кодирование цветного изображения

Представление графических данных

Модель CMYK.

Дополняющие цвета:

• голубой (Cyan = B+G), дополняющий красного;

• пурпурный (Magenta = R+B), дополняющий зеленого;

• желтый (Yellow = R+G), дополняющий синего.

Представление графических данных

Оцифровка изображений

Если для кодирования яркости каждой точки использовать по одному байту (8 бит) на каждый из трех цветов (всего 3 • 8 = 24 бита), то система обеспечит представление 224 = 16,7 млн распознаваемых цветов, что близко цветовосприятию человеческого зрения.

Режим представления цветной графики двоичным кодом из 24 разрядов называется полноцветным или TrueColor.

Например, скромный по современным меркам экран монитора имеет растр 800x600 точек, изображение, представленное в режиме TrueColor, займет 800 х 600 х 3 = 1 440 000 байт.

В случае, когда не требуется высокое качество отображения цвета, применяют режим HighColor, который кодирует одну точку растра двумя байтами (16 разрядов дают 216 = 65,5 тысячи цветов).

Сжатие данных Преобразование данных,

производимое с целью

уменьшения их объѐма.

Применяется для более

рационального использования

устройств хранения и

передачи данных. Сжатие

основано на устранении

избыточности, содержащейся

в исходных данных.

Сжатие информации

• Пример. Если в слове «Дерево» умышленно пропустить некоторые буквы

«Д р во»

• Пример. Сумма последовательности чисел может быть записана так:

2 + 4 + 6 + ⋯+ 38 + 40,

• или так:

2𝑖20𝑖=1 .

Степень избыточности литературного английского языка

составляет 50%.

Примеры избыточности в тексте:

• повторение в тексте фрагментов

• некоторые значения в сжимаемых данных встречаются

чаще других

Сжатие информации

Разработаны и применяются два типа алгоритмов

сжатия:

• сжатие с изменением структуры данных (оно

происходит без потери данных, обратимые

методы);

• сжатие с частичной потерей данных (с регулируемой

потерей данных).

Сжатие информации

Алгоритмы с изменением структуры данных

• GIF, TIF, PCX, PNG – для графических данных;

• AVI – для видеоданных;

• ZIP, ARJ, RAR, CAB – для любых типов данных.

Коэффициент сжатия - основная характеристика

алгоритма сжатия:

k = So/Sc,

где So — объѐм исходных данных, Sc — объѐм сжатых.

Если k = 1, алгоритм не производит сжатия

Если k < 1, то алгоритм порождает сообщение

большего размера, нежели несжатое

Сжатие информации

Пример. Входной текст состоит из десятичной записи

целых чисел и заков «минус», разделенных пробелами:

«280 -1296 48 40 365 -159 13 777». Алфавит

приведенного текста состоит из 12 символов (цифры от

0 до 9, знак «-» и пробел). Для кодирования такого

количества символов достаточно четырех бит

(двоичнодесятичный способ представления). Если

упаковать коды данных символов в 4 бита («0» ->

«0000», «1» -> «0001»,… «9»-> «1001», «-» -> «1110»,

«пробел» -> «1111»), то можно будет кодировать по 2

символа входного массива одним байтом в выходном

массиве. В результате получаем двухкратное сжатие

данных.

Алгоритмы сжатия без потери данных Метод упаковки - уменьшение количества бит,

отводимых для кодирования символов, если в данных

присутствует только небольшая часть всего алфавита

Пример

«КОЛ_ОКОЛО_КОЛОКОЛА»

5 различных символов,

log25=3 бит,

8 символов*3 бита=54 бита≈7 байт.

k = 18/7=2,6 раз

Метод Хаффмана – расширение метода упаковки,

кодирует часто встречающиеся символы короткими

кодами, а редко встречающиеся — более длинными

Алгоритмы сжатия без потери данных 3. Метод RLE (кодирование повторов) - строка

одинаковых символов, составляющих серию, заменяется

строкой, которая содержит сам повторяющийся символ и

количество его повторов

Пример

Строка изображения в черно-белом варианте

B - чѐрный пиксель, W - белый: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWW

WWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW

12W1B12W3B24W1B14W

4. Алгоритм Лемпеля-Зива - создаѐт таблицу

преобразования строк: определѐнным

последовательностям символов ставятся в соответствие

группы бит фиксированной длины

Сжатие информации

Алгоритмы с частичной потерей данных

Пример. Глаз человека наиболее чувствителен к

зеленому цвету, чувствительность к красному меньше

примерно в 4 раза, а к синему почти в 10 раз. Это

означает, что для хранения этой информации можно

использовать меньшее количество бит.

Сжатие информации

Алгоритмы с частичной потерей данных

• JPEG – метод сжатия графических данных;

• MPEG – метод сжатия видеоданных;

• MP3 – метод сжатия звуковых данных.

Форматы используемые необратимые методы сжатия

• MPEG-1 – применялся в первых Video CD (VCD-I);

• MPEG-2 – используется в DVD и Super Video CD (SVCD,

VCD-II);

• MJPEG – формат сжатия видео, в котором каждый кадр

сжимается по методу JPEG;

• MPEG-4 – наиболее эффективный формат сжатия;

• DivX, XviD – улучшенные модификации формата MPEG.