double arrow

Прямой код.Прямой код числа есть представление числа в виде абсолютного значения с кодом знака. Знак плюс кодируется двоичным 0, а минус – 1

Правило образования прямого кода целого числа записывается в виде

где n – количество разрядов, используемых для представления значения числа.

Знаковый разряд занимает позицию с весом 2n.

Пример. n = 4

A1 = +1011; [A1]пр = 0.1011.

A2 = - 1011; [A2]пр = 1.1011.

Правило образования прямого кода правильной дроби записывается в виде

Знаковый разряд занимает позицию с весом 20.

Пример. n = 4

A1 = +0,1010; [A1]пр = 0,1010.

A2 = - 0,1010; [A2]пр = 1,1010.

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

A = +00…00; [A]пр = 0.00…00.

A = - 00…00; [A]пр = 1.00…00.

Прямой код характеризуется:

– в прямом коде удобно выполнять операции умножения и деления;

– недостатком представления чисел в прямом коде является сложность правил выполнения сложения и вычитания при различных комбинациях знаков чисел.

Операции сложения и вычитания чисел с разными знаками в ЭВС сводятся к операции сложения. Для этого используются дополнительный и обратный коды представления чисел со знаком.

Дополнительный и обратный коды положительных чисел совпадают с их прямым кодом.

Основой дополнительного и обратного кодов отрицательных чисел являются дополнения чисел до:

– для целых чисел дополнения до 2n или до 2n – 1 соответственно;

– для правильных дробей дополнения до 1 или до 1 – 2-n соответственно.

Для лучшего понимания замены операции вычитания операцией сложения рассмотрим пример.

Пример. Вычислить разность А - В, для A =111, B = 110 (n = 3).

Представим B в виде дополнения до 2n:

B¢ = 2n - B = 1000 - 110 = 010.

Заменим далее операцию вычитания операцией сложения:

отбрасывается
A - B = A + B¢ = 111 + 010 = 1 001.

Результат как n-разрядная разность получился верным. Однако появившуюся единицу с весом 23 необходимо отбросить, так как вместо вычитания из числа A числа B = 6 к числу A было добавлено B' = 2. Таким образом, сумма получена с избытком 2n = 8.

Дополнительный код.В основе дополнительного кода n-разрядного отрицательного двоичного числа A лежит дополнение

а) для целого числа до 2n: A¢ = 2n - |A|;

б) для правильной дроби до 1: A¢ = 1 - |A|.

Дополнительный код целого отрицательного n-разрядного числа A представляет собой дополнение до 2n+1 и определяется следующим образом

инверсия числа
дополнение A¢
код знака
[A]доп = 2n+1 + A = 2n+1 - |A| = 2n + 2n - |A| = 2n + 2n - 1 - |A| + 1.

Пример. Записать дополнительный код числа A = - 101101, n = 6.

10.000000 2n+1 1.000000 2n 1.000000 2n

- 101101 |A| - 101101 |A| - 1

1.010011 [A]доп 0.010011 A¢ 0.111111

+ 1.000000 2n - 101101 |A|

1.010011 [A]доп 0.010010 инверсия |A|

+ 1

0.010011 A¢

+ 1.000000 2n

1.010011 [A]доп

Дополнительный код отрицательной n-разрядной правильной дроби A представляет собой дополнение до 2 и определяется следующим образом

дополнение A¢
инверсия числа
код знака
[A]доп = 2 + A = 2 - |A| = 1 + 1 - |A| = 1 + 1 – 2-n - |A| + 2-n.

Пример. Записать дополнительный код числа A = - 0,101101, n = 6.

10,000000 2 1,000000 1,000000

- 0,101101 |A| - 0,101101 |A| - 0,000001 2-n

1,010011 [A]доп 0,010011 A¢ 0,111111

+ 1,000000 - 0,101101 |A|

1,010011 [A]доп 0,010010 инверсия |A|

+ 0,000001 2-n

0,010011 A¢

+ 1,000000

1,010011 [A]доп

Формально переход к дополнительному коду осуществляется следующим образом:

1) в знаковый разряд записывается единица;

2) в значащих разрядах нули заменяются единицами, а единицы – нулями, т.е. значащие разряды инвертируются;

3) к младшему разряду прибавляется единица.

Нуль в дополнительном коде имеет одно представление: 0.00…00.

Обратный код.В основе обратного кода n-разрядного отрицательного двоичного числа A лежит дополнение

а) для целого числа до 2n - 1: A" = 2n - 1 - |A| (инверсия |A|);

б) для правильной дроби до 1 – 2-n: A" = 1 - 2-n - |A| (инверсия |A|).

Обратный код целого отрицательного n-разрядного числа A представляет собой дополнение до 2n+1 без единицы младшего разряда и определяется следующим образом

дополнение A" – инверсия числа
код знака
[A]обр = 2n+1 - 1 + A = 2n+1 -1 - |A| = 2n + 2n - 1 - |A|.

Пример. Записать обратный код числа A = - 101101, n = 6.

10.000000 2n+1 1.000000 2n

- 1 - 1

1.111111 0.111111

- 101101 |A| - 101101 |A|

1.010010 [A]обр 0.010010 A" = инверсия |A|

+ 1.000000 2n

1.010010 [A]обр

Обратный код отрицательной n-разрядной правильной дроби A представляет собой дополнение до 2 без единицы младшего разряда и определяется следующим образом

дополнение A" – инверсия числа
код знака
[A]обр = 2 - 2-n + A = 2 - 2-n - |A| = 1 + 1 - 2-n - |A|.

Пример. Записать обратный код числа A = - 0,101101, n = 6.

10,000000 2 1,000000

- 0,000001 2-n - 0,000001 2-n

1,111111 0,111111

- 0,101101 |A| - 0,101101 |A|

1,010010 [A]обр 0,010010 A" = инверсия |A|

+ 1,000000

1,010010 [A]обр

Формально переход к обратному коду осуществляется следующим образом:

1) в знаковый разряд записывается единица;

2) в значащих разрядах нули заменяются единицами, а единицы – нулями, т.е. значащие разряды инвертируются.

Нуль в обратном коде имеет одно представление:

A = +00…00; [A]обр = 0.00…00.

A = - 00…00; [A]обр = 1.11…11.

5. Двоично-кодированное представление десятичных чисел

Для сочетания простоты двоичной системы с удобствами десятичной применяют схемы, в которых цифры десятичного числа кодируются группами двоичных разрядов. При этом каждая такая группа рассматривается как одно целое. Схема кодирования, при которой каждая десятичная цифра представляется двоично-кодированной группой, называется двоично-кодированной десятичной схемой.

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

,

где ajj-я десятичная цифра, – i-й разряд j-ой тетрады, n – количество десятичных цифр.

Количество различных Д-кодов определяется количеством возможных сочетаний по 10 из 16 комбинаций, которые допускает тетрада.

При образовании Д-кода следует исходить из общих требований, предъявляемых к системам счисления:

1) различным десятичным цифрам должны соответствовать различные тетрады;

2) большая десятичная цифра должна изображаться большей тетрадой, если разряды тетрады имеют веса по двоичной системе счисления;

3) для двух десятичных цифр и , связанных соотношением a + b = 9, должно удовлетворяться условие

(i = 0, 1, 2, 3);

Коды, обладающие таким свойством, называют самодополнительными. Они применяются при выполнении арифметических действий над десятичными числами, представленными в обратном или дополнительном коде;

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

,

где σ3, σ2, σ1, σ0 – веса соответствующих разрядов тетрады.

Существует несколько способов кодирования десятичных цифр. В табл. 1 приведено кодирование десятичных цифр в различных схемах представления десятичных чисел.

Таблица 1

Десятичная цифра Двоичные коды
8421+3 2 из 5

Наиболее известна схема 8421 BCD (8421 Binary-Coded Decimal). В коде 8421 разрешенные комбинации соответствуют двоичным эквивалентам десятичных цифр с весами разрядов, равных степеням основания 2: каждая цифра десятичного числа представляется в двоичной форме и изображается соответствующим 4-разрядным двоичным числом (тетрадой). Код 8421 является взвешенным кодом. Для этого кода не выполняется условие 3, так как цифры, являющиеся дополнением до 9, не получаются простым инвертированием тетрад.

Важно понимать, что двоично-десятичный код не является еще одной системой счисления, такой как двоичная, восьмеричная, десятичная и шестнадцатеричная системы. Это фактически та же десятичная система, в которой каждый разряд представлен двоичным эквивалентом. Также важно понимать, что двоично-десятичное число – не то же самое, что обычное двоичное число. Обычный двоичный код представляет в двоичной системе какое-либо десятичное число полностью, а двоично-десятичный код преобразовывает в двоичную систему каждый десятичный разряд по отдельности.

Код 8421 является естественным представлением десятичных цифр в двоичной системе и удобен для ввода/вывода в цифровых устройствах десятичных чисел. Однако использование этого кода связано со сложностью выполнения арифметических операций над десятичными числами.

Для кода 2421 веса разрядов тетрады соответственно равны 2, 4, 2, 1. Таблица кодирования делится на две части: от 0 до 4 – тетрады повторяют двоичные эквиваленты, от 5 до 9 – по сравнению с двоичной системой каждая тетрада содержит избыток +0110 (+6). Это дает возможность любую цифру одной части таблицы превратить в ее дополнение до 9 простым инвертированием разрядов, т.е. код 2421 является самодополнительным. Код 2421 применяется для выполнения арифметических действий над десятичными числами, представленными в обратном или дополнительном коде.

Код 8421+3 называют BCD кодом с избытком 3. В этом коде все тетрады имеют значения на три единицы большие, чем тетрады кода 8421 (отсюда название кода). Для него не существует целочисленных значений веса, которые удовлетворяли бы условию 4, т.е. код 8421+3 не является взвешенным. В коде избытком 3 комбинация, соответствующая любой из десятичных цифр, представляет собой инверсию кодовой комбинации, соответствующей ее дополнению до девяти, т.е. код 8421+3 также является самодополнительным.

Особенность кода 7421 заключается в том, что любая кодовая комбинация содержит не более двух единиц.

Код 2 из 5 представляет собой невзвешенный код с 5 битами в каждой группе. В коде 2 из 5 все кодовые комбинации содержат только две единицы. Это свойство используется для обнаружения ошибочных комбинаций.

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

В ЭВС символьная информация (нечисловая информация, содержащая буквы, цифры, знаки препинания, математические и другие символы) также представляется в виде двоичных кодов. Каждому символу ставится в соответствие определенная двоичная комбинация. Совокупность возможных символов и назначенных им двоичных кодов образует таблицу кодировки. В настоящее время применяется множество различных таблиц кодировки. Объединяет их весовой принцип, при котором веса кодов цифр возрастают по мере увеличения цифры, а веса символов увеличиваются в алфавитном порядке. Так вес буквы «Б» на единицу больше веса буквы «А». Это способствует упрощению обработки в ЭВС.

До недавнего времени наиболее распространенными были кодовые таблицы, в которых символы кодируются с помощью восьмиразрядных двоичных комбинаций (байтов), позволяющих представить 256 различных символов:

расширенный двоично-кодированный код EBCDIC – Extended Binary Coded Decimal Interchange Code. Код EBCDIC используется в качестве внутреннего кода в универсальных ЭВМ фирмы IBM. Он же известен под названием ДКОИ – двоичный код обмена информацией;

американский стандартный код для обмена информацией ASCII (American Standard Code for Information Interchange).

Стандартный код ASCII – 7-разрядный, восьмая позиция отводится для записи бита четности. Это обеспечивает представление 128 символов, включая все латинские буквы, цифры, знаки основных математических операций и знаки пунктуации. Позже появилась европейская модификация ASCII, называемая Latin 1 (стандарт ISO 8859-1). В ней полезно используются все 8 разрядов. Дополнительные комбинации (коды 128-255) в новом варианте отводятся для представления специфических букв алфавитов западно-европейских языков, символов псевдографики, некоторых букв греческого алфавита, а также ряда математических и финансовых символов. Именно эта кодовая таблица считается мировым стандартом де-факто, который применяется с различными модификациями во всех странах. В зависимости от использования кодов 128-255 различают несколько вариантов стандарта ISO 8859 (табл. 2).

Таблица 2

Стандарт Характеристика
ISO 8859-1 Западно-европейские языки
ISO 8859-2 Языки стран центральной и восточной Европы
ISO 8859-3 Языки стран южной Европы, мальтийский и эсперанто
ISO 8859-4 Языки стран северной Европы
ISO 8859-5 Языки славянских стран с символами кириллицы
ISO 8859-6 Арабский язык
ISO 8859-7 Современный греческий язык
ISO 8859-8 Языки иврит и идиш
ISO 8859-9 Турецкий язык
ISO 8859-10 Языки стран северной Европы (лапландский, исландский)
ISO 8859-11 Тайский язык
ISO 8859-13 Языки балтийских стран
ISO 8859-14 Кельтский язык
ISO 8859-15 Комбинированная таблица для европейских языков
ISO 8859-16 Содержит специфические символы ряда языков: албанского, хорватского, английского, финского, французского, немецкого, венгерского, ирландского, итальянского, польского, румынского и словенского

Хотя код ASCII достаточно удобен, он все же слишком тесен и не вмещает множества необходимых символов. По этой причине в 1993 году консорциумом компаний Apple Computer, Microsoft, Hewlett-Packard, DEC и IBM был разработан 16-разрядный стандарт ISO 10646, определяющий универсальный набор символов (UCS, Universal Character Set). Новый код, известный под названием Unicode, позволяет задать до 65536 символов, т.е. дает возможность одновременно представить символы всех основных «живых» и «мертвых» языков. Для букв русского языка выделены коды 1040-1093.

В «естественном» варианте кодировки Unicode, известном как UCS-2, каждый символ описывается двумя последовательными байтами m и n, так что номеру символа соответствует численное значение 256×m+n. Таким образом, кодовый номер представлен 16-разрядным двоичным числом. Наряду с UCS-2 в рамках Unicode существуют еще несколько вариантов кодировки Unicode (UTF, Unicode Transformation Formats), основные из которых UTF-8 и UTF-7.

В кодировке UTF-8 коды символов меньшие, чем 128, представляются одним байтом. Все остальные коды формируются по более сложным правилам. В зависимости от символа его код может занимать от двух до шести байтов, причем старший бит каждого байта всегда имеет единичное значение. Иными словами, значение байта лежит в диапазоне от 128 до 255. Ноль в старшем бите байта означает, что код занимает один байт и совпадает по кодировке с ASCII. Схема формирования кодов UTF-8 показана в табл. 3.

Таблица 3

Число байтов Двоичное представление Число свободных битов
0ххххххх
110ххххх 10хххххх 11 (5 + 6)
1110хххх 10xххххх 10хххххх 16 (4 +6×2)
11110ххх 10хххххх 10хххххх 10хххххх 21 (3+6×3)
111110хх 10хххххх 10хххххх 10хххххх 10хххххх 26 (2 +6×4)
1111110х 10хххххх 10хххххх 10хххххх 10хххххх 10хххххх 31 (1+6×5)

В UTF-7 код символа также может занимать один или более байтов, однако в каждом из байтов значение не превышает 127 (старший бит байта содержит ноль). Многие символы кодируются одним байтом, и их кодировка совпадает с ASCII. Однако некоторые коды зарезервированы для использования в качестве преамбулы, характеризующей последующие байты многобайтового кода.

Стандарт Unicode обратно совместим с кодировкой ASCII, однако если в ASCII для представления схожих по виду символов (минус, тире, знак переноса) применялся общий код, то в Unicode каждый из этих символов имеет уникальную кодировку. Распределение кодов в Unicode иллюстрирует табл. 4.

Таблица 4

Коды Символы
0-8191 Алфавиты – английский, европейские, фонетический, кириллица, армянский, иврит, арабский, эфиопский, бенгали, деванагари, гур, гуджарати, ория, телугу, тамильский, каннада, малайский, сингальский, грузинский, тибетский, тайский, лаосский, кхмерский, монгольский
8192-12287 Знаки пунктуации, математические операторы, технические символы, орнаменты и т. п.
12288-16383 Фонетические символы китайского, корейского и японского языков
16384-59391 Китайские, корейские, японские идеографы. Единый набор символов каллиграфии хань
59392-65024 Блок для частного использования
65025-65536 Блок обеспечения совместимости с программным обеспечением

7. Форматы данных

Для каждого типа данных в ЭВС предусмотрены определенные форматы. Среди цифровых данных можно выделить две группы:

– целые типы, используемые для представления целых чисел;

– вещественные типы для представления рациональных чисел.

В рамках первой группы имеется несколько форматов представления численной информации, зависящих от ее характера:

– числа в форме с фиксированной запятой (ФЗ);

– упакованные целые числа;

– десятичные числа.

Для представления вещественных чисел используется форма с плавающей запятой (ПЗ):

– числа в форме с плавающей запятой;

– упакованные числа с плавающей запятой.

Числа в форме с фиксированной запятой. Наиболее распространенным является способ, при котором запятая фиксируется после младшего разряда. В этом случае представимы лишь целые числа. Поэтому в дальнейшем понятие ФЗ будет связываться исключительно с целыми числами, а операции с числами в форме ФЗ будут характеризоваться как целочисленные. Возможны два варианта (рис. 1) представления чисел: знаковое (числа со знаком) и беззнаковое (числа без знака):

Рис. 1

На рис. 2 приведены целочисленные форматы с фиксированной запятой, принятые в микропроцессорах фирмы Intel.

Рис. 2

Целые числа применяются также для работы с адресами. На рис. 2 это 32-разрядный формат ближнего и 48-разрядный формат дальнего указателей.

Упакованные целые числа. В современных микропроцессорах имеются команды, оперирующие целыми числами, представленными в упакованном виде. Связано это с обработкой мультимедийной информации. Формат предполагает упаковку в пределах достаточно длинного слова (обычно 64-разрядного) нескольких небольших целых чисел, а соответствующие команды обрабатывают все эти числа параллельно. Если каждое из чисел состоит из четырех двоичных разрядов, то в 64-разрядное слово можно поместить до 16 таких чисел. Неиспользованные разряды заполняются нулями. В микропроцессорах фирмы Intel, начиная с Pentium MMX, присутствуют специальные команды для обработки мультимедийной информации (ММХ-команды), оперирующие целыми числами, упакованными в квадрослова (64-разрядные слова). Предусмотрены три формата (рис. 3): упакованные байты (восемь 8-разрядных чисел); упакованные слова (четыре 16-разрядных числа) и упакованные двойные слова (два 32-разрядных числа).

Байты в формате упакованных байтов нумеруются от 0 до 7, причем байт 0 располагается в младших разрядах квадрослова. Аналогичная система нумерации и размещения упакованных чисел применяется для упакованных слов (номера 0-3) и упакованных двойных слов (номера 0-1).


Идентичные форматы упакованных данных применяются также в другой технологии обработки мультимедийной информации, предложенной фирмой AMD. Эта технология носит название 3DNow!.

Рис. 3

Десятичные числа. В основу форматов десятичных чисел положен двоично-десятичный код (BCD — Binary Coded Decimal).

Используются два формата (рис. 4) представления десятичных чисел (все числа рассматриваются как целые): зонный (распакованный) и уплотненный (упакованный).

Рис. 4

В обоих форматах каждая десятичная цифра представляется двоичной тетрадой, т.е. заменяется двоично-десятичным кодом. Из оставшихся незадействованных шести четырехразрядных двоичных комбинаций две служат для кодирования знаков «+» и «-». Например, для знака «плюс» может быть выбран код 11002 = С16, а для знака «минус» – код 11012 = D16.

Зонный формат (рис. 4, а) применяется в операциях ввода/вывода. В нем под каждую цифру выделяется один байт, где младшие четыре разряда отводятся под код цифры, а в старшую тетраду (поле зоны) записывается специальный код «зона», не совпадающий с кодами цифр и знаков, например, код 11112 = F16. Исключение составляет байт, содержащий младшую цифру десятичного числа, где в поле зоны хранится знак числа. В некоторых ЭВМ принят вариант зонного формата, где поле зоны заполняется нулями.

При выполнении операций сложения и вычитания над десятичными числами обычно используется упакованный формат. В упакованном формате (рис. 4, б) каждый байт содержит коды двух десятичных цифр. Правая тетрада последнего байта предназначается для записи знака числа. Десятичное число должно занимать целое количество байтов. Если это условие не выполняется, то четыре старших двоичных разряда левого байта заполняется нулями.

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

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

Для повышения точности представления мантиссы применяется способ, называемый приемом скрытой единицы. Суть его в том, что в нормализованной мантиссе старшая цифра всегда равна единице (для представления нуля используется специальная кодовая комбинация), следовательно, эта цифра может не записываться, а подразумеваться. Запись мантиссы начинают с ее второй цифры, и это позволяет задействовать дополнительный значащий бит для более точного представления числа. Следует отметить, что значение порядка в данном случае не меняется. Скрытая единица перед выполнением арифметических операций восстанавливается, а при записи результата – удаляется. Таким образом, нормализованная мантисса 0,101000(1) при использовании способа «скрытой единицы» будет иметь вид 0,010001 (в скобках указана цифра, не поместившаяся в поле мантиссы при обычной записи).

На рис. 5 представлен типичный 32-битовый формат числа с ПЗ. Старший (левый) бит содержит знак числа. Значение смещенного порядка хранится в разрядах с 1-го по 8-й и может находиться в диапазоне от 0 до 255. Для получения фактического значения порядка из содержимого этого поля нужно вычесть фиксированное значение, равное 128. С таким смещением фактические значения порядка могут лежать в диапазоне от -128 до +127. Третье поле слова содержит нормализованную мантиссу со скрытым разрядом (единицей). Благодаря такому приему 23-разрядное поле позволяет хранить 24-разрядную мантиссу в диапазоне от 0,5 до 1,0.

30 23 22 0
Знак мантиссы Смещенный порядок Мантисса

Рис. 5

Числа с плавающей запятой в разных ЭВМ имеют несколько различных форматов. В настоящее время для всех ЭВМ рекомендован стандарт, разработанный общепризнанным международным центром стандартизации IEEE (Institute of Electrical and Electronics Engineers) – IEEE 754. Этот стандарт был разработан с целью облегчения переноса программ с одного процессора на другие и нашел широкое применение практически во всех процессорах и арифметических сопроцессорах.

Стандарт определяет 32-битовый (одинарный) и 64-битовый (двойной) форматы (рис. 6) с 8- и 11-разрядным порядком соответственно. Основанием системы счисления является 2.

Рис. 6

В дополнение, стандарт предусматривает два расширенных формата, одинарный и двойной, фактический вид которых зависит от конкретной реализации. Расширенные форматы предусматривают дополнительные биты для порядка (увеличенный диапазон) и мантиссы (повышенная точность). Табл. 5 содержит описание основных характеристик всех четырех форматов.

Таблица 5

Параметр Формат
Одинарный Одинарный расширенный Двойной Двойной расширенный
Ширина слова, бит ≥ 43 ≥ 79
Ширина порядка, бит ≥ 11 ≥ 15
Смещение порядка Не определено Не определено
Максимальный порядок ≥ 1023 ≥ 16383
Минимальный порядок -126 ≤ -1022 -1022 ≤ -16382
Диапазон чисел 10-38, 10+38 Не определен 10-308, 10+308 Не определен
Длина мантиссы, бит ≥ 31 ≥ 63
Количество порядков Не определено Не определено
Количество мантисс 223 Не определено 252 Не определено

Не все кодовые комбинации в форматах IEEE интерпретируются обычным путем – некоторые комбинации используются для представления специальных значений. Предельные значения порядка, содержащие все нули (0) и все единицы (255 – в одинарном формате и 2047 – в двойном формате), определяют специальные значения.

Представлены следующие классы чисел:

– порядки в диапазоне от 1 до 254 для одинарного формата и от 1 до 2036 – для двойного формата, используются для представления ненулевых нормализованных чисел. Порядки смещены так, что их диапазон составляет от -126 до +127 для одинарного формата и oт -1022 до +1023 – для двойного формата Нормализованное число требует, чтобы слева от двоичной запятой был единичный бит. Этот бит подразумевается, благодаря чему обеспечивается эффективная ширина мантиссы, равная 24 битам для одинарного и 53 битам – для двойного форматов;

– нулевой порядок совместно с нулевой мантиссой представляют положительный или отрицательный 0, в зависимости от состояния бита знака мантиссы Порядок, содержащий единицы во всех разрядах, совокупно с нулевой мантиссой представляют положительную или отрицательную бесконечность, в зависимости от состояния бита знака, что позволяет пользователю самому решить, считать ли это ошибкой или продолжать вычисления со значением, равным бесконечности;

– нулевой порядок в сочетании с ненулевой мантиссой представляют ненормализованное число. В этом случае бит слева от двоичной точки равен 0 и фактический порядок равен -126 или -1022. Число является положительным или отрицательным в зависимости от значения знакового бита;

– кодовая комбинация, в которой порядок содержит все единицы, а мантисса не равна 0, используется как признак «не числа» (NAN – Not a Number) и служит для предупреждения о различных исключительных ситуациях.

Упакованные числа с плавающей запятой. В современных микропроцессорах помимо упакованных целых чисел используются и упакованные числа с плавающей запятой. Так, в технологии 3DNow! фирмы AMD имеются команды, служащие для увеличения производительности систем при обработке трехмерных приложений, описываемых числами с ПЗ. Каждая такая команда работает с двумя операндами с плавающей запятой одинарной точности. Операнды упаковываются в 64-разрядные группы, как это показано на рис. 7.

Рис. 7

В микропроцессорах фирмы Intel, начиная с Pentium III, для аналогичных целей имеются команды, реализующие технологию SSE, также ориентированную на параллельную обработку упакованных чисел с ПЗ. Здесь (рис. 7) числа объединяются в группы длиной 128 бит, и это позволяет упаковать в группу четыре 32-разрядных числа с ПЗ (числа с одинарной точностью). Позже, в технологии SSE2, которую можно считать дальнейшим развитием SSE, появился формат, где в группу из 128 бит упаковываются два 64-разрядных числа с ПЗ, т.е. числа, представленные с двойной точностью.


Сейчас читают про: