Автор работы: Пользователь скрыл имя, 14 Марта 2015 в 11:20, реферат
Главной частью информатики как науки является теория информации, которая занимается изучением информации как таковой, ее появлением, развитием и уничтожением. В данной науке близко примыкает теория кодирования, которая занимается изучением форм представления информации при ее передаче по различным каналам связи, а также при хранении и обработке.
С передачей информации связан ряд проблем:
повышение эффективности передачи, для повышения скорости передачи информации по каналу требуется разработка методов кодирования;
повышение надежности передачи путем использования помехоустойчивых кодов;
Введение
1. Теоретическая часть
1.1 Кодирование информации. Формальный язык
1.2 Представление положительных и отрицательных чисел в памяти компьютера. Прямой и дополнительный код числа
1.3 Кодирование вещественных чисел. Нормализованное представление числа
1.4 Представление целых чисел в памяти ЭВМ. Индикаторы переноса и переполнения
2.Практическая часть
2.1 Индикаторы переноса и переполнения
2.2 Кодирование звуковой информации
2.3 Растровая и векторная графика
Заключение
Список используемой литературы
Порядок числа, представленного в формате с плавающей точкой, изменяется в диапазоне от -128 до +127 и запоминается увеличенным на 128. Такой способ представления порядка называется смещенным.
Следует иметь в виду, что, хотя для мантиссы отведено 23 разряда для чисел одинарной точности и 55 разрядов – для чисел двойной точности, в операциях участвует 24 и 56 разрядов соответственно, т.к. старший разряд мантиссы нормализированного числа не хранится, т.е. имеет место так называемый скрытый разряд. Однако при аппаратном выполнении операций этот разряд автоматически восстанавливается и учитывается. Порядок числа также учитывает скрытый старший разряд мантиссы.
Нормализованная мантисса в двоичной системе счисления всегда представляется десятичным числом m, лежащим в диапазоне 0,5 <= m < 1.
Пример представления числа в формате с плавающей точкой:
0.110 = 0.000(1100)2 = 0.(1100)2*2-3
-310 = (-3 + gelleruri128)10 = 011111012.
Если мантисса представлена бесконечной периодической дробью, то последний учитываемый разряд мантиссы округляется.
-49.510 = -110001.1002 = -0.11000112*26
610 = (6 + 128)10 = 100001102.
При выполнении арифметических операций над числами, представленными в формате с плавающей точкой, надо отдельно выполнять их для порядков и мантисс. При алгебраическом сложении чисел надо сначала уравнять порядки слагаемых. При умножении порядки надо складывать, а мантиссы — перемножать. При делении из порядка делимого вычитают порядок делителя, а над мантиссами совершают обычную операцию деления. После выполнения операций, если это необходимо, проводят нормализацию результата, что влечет изменение порядков, т.к. каждый сдвиг на один разряд влево соответствует уменьшению порядка на единицу, а сдвиг вправо увеличению на единицу. Введение термина «плавающая точка» как раз и объясняется тем, что двоичный порядок, определяющий фактическое положение точки в изображении числа, корректируется после выполнения каждой арифметической операции, т.е. точка в изображении числа «плавает» (изменяется ее положение) по мере изменения данной величины. А в изображении чисел, представленных в формате с фиксированной точкой, она жестко зафиксирована в определенном месте.
Арифметические операции с числами, представленными в формате с плавающей точкой, намного сложнее таких же операций для чисел, представленных в формате с фиксированной точкой. Но зато плавающая точка позволяет производить операции масштабирования автоматически в самой машине и избавляет от накопления абсолютной погрешности при вычислениях (хотя не избавляет от накопления относительной погрешности).
Для упрощения будем разбирать четырехбитовые машинные слова. Такой размер слова обеспечивает хранение десятичных чисел всего лишь от 0 до 15 (если брать только положительные целые числа). Однако закономерности, обнаруженные на примере четырехбитовых слов, сохраняют силу для машинного слова любого размера.
Предположим, что процессор ЭВМ способен увеличивать (прибавлять 1) и дополнять (инвертировать) четырехбитовые слова. Например, результатом увеличения слова 1100 является 1101, а результатом дополнения этого слова является 0011. Рассмотрим слово 0000, представляющее десятичное число 0. В результате увеличения содержимое этого слова станет равным 0001, что соответствует десятичному числу 1. Продолжая последовательно увеличивать четырехбитовые слова, придем к ситуаци, когда, увеличивая слово 1111 (которое представляет десятичное число 15), получим в результате слово 0000, т.е. 1111 + 1 = (1)0000. Т.е. Получили неверную арифметическую операцию и вернулись в исходное состояние. Это произошло из-за того, что слово памяти может состоять из конечного числа бит. Таким образом, числовая система ЭВМ является конечной и цикличной.
Можно битовую конфигурацию 1111 принять за код для -1. Тогда 1110 интерпретируется как -2, 1101 как -3, 1000 как -8. Тем самым получили другую числовую систему — со знаком, содержащую как положительные, так и отрицательные числа. В этой системе половина четырехбитовых конфигураций, начинающаяся с единицы, интерпретируется как отрицательные числа, а другая половина, начинающаяся с нуля, - как положительные числа или нуль. Поэтому старший бит числа (третий по счету, если нумерацию бит начинать с нуля справа налево) называется знаковым битом. Числовая система со знаком также конечна и циклична, арифметически неверный результат даст попытка увеличить число 7 на единицу (0111 + 1 = 1000 = -810).
Если знаковый бит равен нулю, то значение числа легко вычисляется — игнорируется знаковый бит, а оставшиеся три бита интерпретируются как двоичный код десятичного числа. Например, слово 0110 представляет двоичное число 110, которое равно десятичному числу 6.
Для оценки отрицательного числа нужно изменить его знак. Рассмотрим четырехбитовое число k в системе со знаком. Тогда -k = (-1 - k) + 1, следовательно, для вычисления значения -k необходимо вычесть k из -1 (т.е. из 1111) и затем прибавить единицу. Заметим, что операция вычитания всегда возможна, никогда не требует заема и равнозначна операции инвертирования битов вычитаемого. Например, 1111 - 1011 = 0100; здесь в вычитаемом, равном 1011, единицы перешли в нули, а нуль — в единицу. Инвертирование бит в слове называется дополнением до единицы. Для определения отрицательного значения числа k надо к его дополнению до единицы прибавить единицу (согласно вышеприведенному равенству). Инвертирование бит в слове с добавлением единицы к младшему биту называется дополнением до двух. Например, требуется найти, какое число закодировано в слове 1001. Для этого сначала выполняем операцию инвертирования: 1001 -> 0110, а затем к полученному результату прибавляем единицу 0110 + 1 = 0111, что является двоичным кодом числа 7. Таким образом, значением 1001 является число -7.
Рассмотрим более подробно ситуацию, приводящую при увеличении четырехбитового числа (т.е. при прибавлении к нему единицы) к неверному арифметическому результату, возникающему из-за конечности числовой системы ЭВМ. В числовой системе без знака такая проблема встает при увеличении слова 1111, при этом имеет место перенос единицы из знакового бита в никуда. В случае системы чисел со знаком перенос из старшего бита дает верный результат: 1111 + 0001 = (1)0000 (что правильно: -1 + 1 = 0), но увеличение слова 0111 приводит к ошибочной ситуации: 0111 + 1 = 1000 (7 + 1 = -8), при этом имеет место перенос в знаковый бит.
В процессоре ЭВМ (той его части, которая ответственна за выполнение арифметических операций) имеется два индикатора — индикатор переноса и индикатор переполнения. Каждый индикатор содержит один бит информации и может быть установлен процессором (в этом случае ему придается значение, равное единице) или сброшен (равен нулю). Индикатор переноса указывает за перенос из знакового бита за пределы слова, а индикатор переполнения на перенос в знаковый бит. Таким образом, после завершения операции, в которой происходит перенос в самый старший бит, процессор устанавливает индикатор переполнения; если такого переноса нет, то индикатор переполнения сбрасывается. Индикатор переноса обрабатывается аналогичным образом.
Важно то, что после выполнения операции процессором ЭВМ сигнализирует о состоянии индикаторов, и их можно проверить. Если состояние индикаторов указывает на неправильный арифметический результат, то необходимо исправить эту ситуацию, т.е. пользователю ЭВМ предоставляется возможность контролировать правильность выполнения арифметических операций.
Пример 1
Рассмотрим сложение двух чисел: 0101 + 0011
= 1000. В результате выполнения операции
сложения произошел перенос в знаковый
бит, а переноса из знакового бита не было.
Таким образом, после завершения этой
операции индикатор переноса будет сброшен,
а индикатор переполнения установлен.
Поэтому если рассматривать эти два числа
как целые без знака, то результат является
арифметически правильным, т.к. индикатор
переноса сброшен. Если же рассматривать
числа в системе со знаком, то бит переполнения
показывает, что произошло изменение знака
(перенос в знаковый бит есть, а перенос
из него — нет), поэтому арифметически
результат неправильный.
Пример 2
В результате сложения чисел 1101 + 0101 = 0010
происходит перенос в знаковый бит и из
знакового бита. Поэтому будет установлен
индикатор переноса, а индикатор переполнения
сброшен. Следовательно, в системе чисел
без знака результат является арифметически
неправильным, а в системе чисел со знаком
— правильным.
Пример 3
В результате выполнения операции вычитания:
1001 - 0011 = 1001 + (-0011) = 1001 + (1100 + 1) = 1001 + 1101 = 0110
происходит перенос из знакового бита,
а перенос в знаковый бит нет. Следовательно,
индикатор переноса будет сброшен, а индикатор
переполнения установлен. Это указывает
на то, что в данном примере в системе без
знака результат арифметически правильный,
а в системе со знаком — неправильный.
Кодирование символов. Unicode
Раздел:
Кодирование информации
Любые числа (в определенных пределах) в памяти компьютера кодируются числами двоичной системы счисления. Для этого существуют простые и понятные правила перевода. Однако на сегодняшний день компьютер используется куда шире, чем в роли исполнителя трудоемких вычислений. Например, в памяти ЭВМ хранятся текстовая и мультимедийная информация. Поэтому возникает первый вопрос:
Как в памяти компьютера хранятся символы (буквы)?
Каждая буква принадлежит определенному алфавиту, в котором символы следуют друг за другом и, следовательно, могут быть пронумерованы последовательными целыми числами. Каждой букве можно сопоставить целое положительное число и назвать его кодом символа. Именно этот код будет храниться в памяти компьютера, а при выводе на экран или бумагу «преобразовываться» в соответствующий ему символ. Чтобы отличить представление чисел от представления символов в памяти компьютера, приходится также хранить информацию о том, какие именно данные закодированы в конкретной области памяти.
Соответствие букв определенного алфавита с числами-кодами формирует так называемую таблицу кодирования. Другими словами, каждый символ конкретного алфавита имеет свой числовой код в соответствии с определенной таблицей кодирования.
Однако алфавитов в мире очень много (английский, русский, китайский и др.). Поэтому следующий вопрос:
Как закодировать все используемые на компьютере алфавиты?
Для ответа на этот вопрос пойдем историческим путем.
В 60-х годах XX века в американском национальном институте стандартизации (ANSI) была разработана таблица кодирования символов, которая впоследствии была использована во всех операционных системах. Эта таблица называется ASCII (American Standard Code for Information Interchange – американский стандартный код для обмена информацией). Чуть позже появилась расширенная версия ASCII.
В соответствие с таблицей кодирования ASCII для представления одного символа выделяется 1 байт (8 бит). Набор из 8 ячеек может принять 28 = 256 различных значений. Первые 128 значений (от 0 до 127) постоянны и формируют так называемую основную часть таблицы, куда входят десятичные цифры, буквы латинского алфавита (заглавные и строчные), знаки препинания (точка, запятая, скобки и др.), а также пробел и различные служебные символы (табуляция, перевод строки и др.). Значения от 128 до 255 формируют дополнительную часть таблицы, где принято кодировать символы национальных алфавитов.
Поскольку национальных алфавитов огромное множество, то расширенные ASCII-таблицы существуют во множестве вариантов. Даже для русского языка существуют несколько таблиц кодирования (распространены Windows-1251 и Koi8-r). Все это создает дополнительные трудности. Например, мы отправляем письмо, написанное в одной кодировке, а получатель пытается прочитать ее в другой. В результате видит кракозябры. Поэтому читающему требуется применить для текста другую таблицу кодирования.
Есть и другая проблема. В алфавитах некоторых языков слишком много символов и они не помещаются в отведенные им позиции с 128 до 255 однобайтовой кодировки.
Третья проблема - что делать, если в тексте используется несколько языков (например, русский, английский и французский)? Нельзя же использовать две таблицы сразу …
Чтобы решить эти проблемы одним разом была разработана кодировка Unicode.
Стандарт кодирования символов Unicode
Для решения вышеизложенных проблем в начале 90-х был разработан стандарт кодирования символов, получивший название Unicode. Данный стандарт позволяет использовать в тексте почти любые языки и символы.
В Unicode для кодирования символов предоставляется 31 бит (4 байта за вычетом одного бита). Количество возможных комбинаций дает запредельное число: 231 = 2 147 483 684 (т.е. более двух миллиардов). Поэтому Unicode описывает алфавиты всех известных языков, даже «мертвых» и выдуманных, включает многие математические и иные специальные символы. Однако информационная емкость 31-битового Unicode все равно остается слишком большой. Поэтому чаще используется сокращенная 16-битовая версия (216 = 65 536 значений), где кодируются все современные алфавиты.
В Unicode первые 128 кодов совпадают с таблицей ASCII.
Аналоговая и цифровая информация
Физически звук представляет собой волновые колебания давления в той или иной среде. Каковы бы ни были физические характеристики колебаний, в данном случае важно то, что звук представляет собой нечто неделимое на части (непрерывное), пробегающее в пространстве и времени. Чтобы записать звук на какой-нибудь носитель можно соотнести его уровень (силу) с какой-нибудь измеряемой характеристикой этого носителя. Так, например, степень намагниченности магнитной ленты в различных ее местах зависит от особенностей звука, который на нее записывался. Намагниченность может непрерывно изменяться на протяжении ленты, подобно тому, как параметры звука могут меняться в воздухе. Т.е. магнитная лента прекрасно справляется с задачей хранения звука. И хранит его в так называемой аналоговой форме, когда значения изменяются непрерывно (плавно), что близко к естественному звуку.