Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы окои.doc
Скачиваний:
23
Добавлен:
19.03.2016
Размер:
6.67 Mб
Скачать

3.4.3. Арифметические действия над нормализованными числами

При алгебраическом сложении и вычитании чисел, представлен­иях в формате с плавающей запятой, сначала уравниваются порядки слагаемых. В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу. В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае не­обходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу. Ниже в примерах для упрощения расчетов порядок представлен в обычной двоичной форме.

Пример. Сложите двоичные нормализованные числа 0,10111•10-1 и 0,11011•1010. Разность порядков слагаемых равно трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо

0,00010111•1010

+

0,11011 •1010

---------------------

0,11101111•1010

Пример. Выполним вычитание двоичных нормализованных чисел 0,10101•1010 и 0,11101•101. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:

0,10101 •1010

0,011101•1010

--------------------

0,001101•1010

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0,1101•100 .

При умножении порядки складываются, а мантиссы перемножаются.

Пример. Выполним умножение двоичных нормализованных чисел:

(0,11101•10101) • (0,1001 • 1011) = (0,11101 • 0,1001) • 10(101+11)=0,100000101 • 101000.

При делении из порядка делимого вычитается порядок делителя, а над мантиссами совершается обычная операция деления. В случае необходи­мости полученный результат нормализуется.

Пример. Выполним деление двоичных нормализованных чисел.

0,1111•10100: 0,101•1011= (0,1111 : 0,101) •10(100-11) = 1,1•101 =0,11•1010

  1. Представление символьной информации.

Символьная информация хранится и обрабатывается в ЭВМ в виде цифрового двоичного кода. Применяются две системы кодирования: символьной информации и десятичных чисел.

В 60-х годах XX века в американском национальном институте стандартизации (ANSI) была разработана таблица кодирования символов, которая впоследствии была использована во всех операционных системах. Эта таблица называется ASCII (American Standard Code for Information Interchange – американский стандартный код для обмена информацией). Чуть позже появилась расширенная версия ASCII.

В соответствие с таблицей кодирования ASCII для представления одного символа выделяется 1 байт (8 бит). Набор из 8 бит может принять 28 = 256 различных значений. Первые 128 значений (от 0 до 127) постоянны и формируют так называемую основную часть таблицы, куда входят десятичные цифры, буквы латинского алфавита (заглавные и строчные), знаки препинания (точка, запятая, скобки и др.), а также пробел и различные служебные символы (табуляция, перевод строки и др.). Цифры имеют коды с 48 по 57. Заглавные буквы латинского алфавита A – Z имеют коды с 65 по 90, строчные a – z с 95 по 122.

Значения от 128 до 255 формируют дополнительную часть таблицы, где принято кодировать символы национальных алфавитов.

Поскольку национальных алфавитов огромное множество, то расширенные ASCII-таблицы существуют во множестве вариантов. Даже для русского языка существуют несколько таблиц кодирования (распространены ГОСТ-альтернативная кодировка, Windows-1251, КОИ-8). Так в кодировке Windows-1251 заглавные буквы русского алфавита имею коды с 192 по 223, строчные буквы – с 224 по 255. Эта кодировка используется ПК, работающих на платформе Windows. Кодировка КОИ-8 является стандартной в сообщениях электронной почты.

Все это создает дополнительные трудности. Например, мы отправляем письмо, написанное в одной кодировке, а получатель пытается прочитать ее в другой. В результате видит нечитаемый текст. Поэтому читающему требуется применить для текста другую таблицу кодирования.

Есть и другая проблема. В алфавитах некоторых языков слишком много символов и они не помещаются в отведенные им позиции с 128 до 255 однобайтовой кодировки.

Третья проблема - что делать, если в тексте используется несколько языков (например, русский, английский и французский)? Нельзя же использовать две таблицы сразу.

Для решения вышеизложенных проблем в начале 90-х был разработан стандарт кодирования символов, получивший название Unicode. Данный стандарт позволяет использовать в тексте почти любые языки и символы.

В Unicode для кодирования символов предоставляется 31 бит (4 байта за вычетом одного бита). Количество возможных комбинаций дает огромное число: 231 = 2 147 483 684 (т.е. более двух миллиардов). Поэтому Unicode описывает алфавиты всех известных языков, включает многие математические и иные специальные символы. Однако информационная емкость 31-битового Unicode все равно остается слишком большой. Поэтому чаще используется сокращенная 16-битовая версия (216 = 65 536 значений), где кодируются все современные алфавиты. В Unicode первые 128 кодов совпадают с таблицей ASCII.