Представление чисел в ЭВМ

В ЭВМ применяются две формы представления чисел:

  • • естественная форма, или форма с фиксированной запятой (точкой) — ФЗ (ФТ);
  • • нормальная форма, или форма с плавающей запятой (точкой) — ПЗ (ПТ).

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

Например, пусть числа представлены в десятичной системе счисления и имеют пять разрядов в целой части числа (до запятой) и пять — в дробной части (после запятой). Числа, записанные в такую разрядную сетку, имеют вид:

+00721.35500;

+00000.00328;

-10301.20260.

Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и поэтому чаще всего не приемлема при вычислениях.

Диапазон значащих чисел N в системе счисления с основанием Р при наличии т разрядов в целой части и 5 разрядов в дробной части числа (без учета знака числа) будет таким:

р~5< уу< Рт - Р '.

Например, при Р= 2, т= 10 и 5 = 6 числа изменяются в диапазоне 0,015 < ТУ < 1024. Если в результате операции получится число, выходящее за допустимые пределы, произойдет переполнение разрядной сетки, и дальнейшие вычисления теряют смысл. В современных компьютерах естественная форма представления используется как вспомогательная и только для целых чисел.

Плавающая запятая (точка). В форме представления с плавающей запятой (точкой) число изображается в виде двух групп цифр:

  • • мантисса;
  • • порядок.

При этом абсолютная величина мантиссы должна быть меньше 1, а порядок должен быть целым числом. В общем виде число в форме с плавающей запятой может быть представлено так:

N = ±М х Р±г,

где М — мантисса числа < 1); г — порядок числа (целое число);

Р — основание системы счисления.

Например, приведенные ранее числа в нормальной форме запишутся следующим образом:

+0,721355 х 103;

+0,328 х 10~3;

-0,103012026 х 105.

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

р т х рАГ-» < N <( - Р т)х Р(р5~1К

Например, при Р= 2, т = 22 и $ = 10 диапазон чисел простирается примерно от Ю“300 до Ю300. Для сравнения скажем, что количество секунд, которые прошли с момента образования планет Солнечной системы, составляет около 1018.

Следует заметить, что все числа с плавающей запятой хранятся в машине в так называемом нормализованном виде.

Нормализованным называют такое число, в старшем разряде мантиссы которого стоит больше нуля. У нормализованных двоичных чисел, следовательно, 0,5 < М < 1.

Нормализованные, т. е. приведенные к правильной дроби, числа:

Ю,3510 = 0,103510 х 10"2;

0,00007245, = 0,7245, х 8'4;

Р5С,9В16 = 0,Р5С9В16 х 16+3.

В памяти ЭВМ числа с ПТ хранятся в двух форматах:

слово — 31 бита или 4 байта;

двойное слово — 64 бита или 8 байт.

Разрядная сетка для чисел с ПТ имеет следующую структуру:

  • • нулевой разряд — это знак числа (0 — «минус», 1 — «плюс»);
  • • с 1-го по 7-й разряд записывается порядок в прямом двоичном коде, пустые разряды заполняются нулями. В первом разряде указывается знак порядка (1 — «плюс» или 0 — «минус»);
  • • с 8-го по 31-й (63) указывается мантисса, слева направо без нуля целых в прямом двоичном коде и для отрицательных чисел, и пустые разряды заполняются нулями.

Алгебраическое представление двоичных чисел. Для алгебраического представления чисел, т. е. для представления чисел с учетом их знака, в вычислительных машинах используются специальные коды:

  • • прямой код числа;
  • • обратный;
  • • дополнительный.

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

Знак числа обычно кодируется двоичной цифрой, при этом:

  • • код 0 означает знак + (плюс);
  • • код 1 означает знак - (минус).

Прямой код числа ./V обозначим [УУ]пр.

Пусть N = ах, а2, а3, ..., ат, тогда:

  • • при УУ> 0, [ЛД = 0, я,, а2, а3, ..., ат,
  • • при N < 0, [ЛПпр = 1, а2, а3, ..., ат;
  • • при N=0 имеет место неоднозначность [0]пр = 0, 0... = 1, 0...

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

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

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

Обратный код числа N обозначим [УУ]обр.

Пусть N = ах, а2, а3, ..., ат и а обозначает инверсию а, т. е. если а = 1, то а = 0, и наоборот. Тогда:

  • • при N> 0, [N]o6p = 0, ах, а2, а3, ..., ат;
  • • при N < О, [N]o6p = 1, ах, а2, а3, ..., ат;
  • • при N=0 имеет место неоднозначность [0]обр = 0,00...0 =

= 1,11-1.

Для того чтобы получить обратный код отрицательного числа, необходимо все цифры этого числа инвертировать, т. е. в знаковом разряде поставить 1, во всех значащих разрядах нули заменить единицами, а единицы — нулями.

Например,

для N = 1011 [N]o6p = 0,1011;

для N=-1011 [N]o6p = 1,0100.

Дополнительный код числа N обозначим [N]aon.

Пусть, как и выше, N = ах, а2, а3, ..., ат и а обозначает величину, обратную а (инверсию а), т. е. если а = 1, то а = 0, и наоборот. Тогда:

  • • при N> 0 [АПдоп = 0, а2, а3, ..., а„;
  • • при N< 0 ДОП =1,о,, а2, а3, ..., ат + 0,00... 1.

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

Например,

для N= 1011 [N]aon = 0,1011;

для N=-1100 [N]aon = 1,0100;

для N=-0000 [N]aon = 10,0000 = 0,0000 (1 исчезает). Неоднозначности в изображении 0 нет.

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

Данные, обрабатываемые в современных процессорах. Подводя итоги вышеизложенному, приведем типы данных (табл. 1.10), используемые в процессорах Intel (Pentium) и AMD (Кб—К8).

Таблица 1.10. Примеры некоторых реальных типов данных современных процессоров

Вид данного

Пояснения

Английский эквивалент (или расшифровка)

Форматы данных, обрабатываемых блоками АЛУ 32-разрядных процессоров

1. Двоичные и строковые

Бит

Bit

Минимальная единица информации. Бит в памяти задается базой (адресом слова) и смещением (номером бита в слове)

Битовое поле

Bit Field

Группа до 32 смежных бит, располагающихся не более чем в 4 байтах

Битовая строка

Bit String

Набор смежных бит длиной до 4 Гбит

Байт

Byte 8 бит

о

Строки байт, слов и двойных слов

Длиной до 4 Гбайт

Bit String, Byte String, Word String,

Double Word String

Числа без знака

Unsigned Byte/ Word/Double Word/ QuadWord

Без знака - байт/слово/двойное/учетверенное слово (8/16/32/64 бит)

Integer Byte/ Word/Double Word/ QuadWord

Целые числа со знаком

Со знаком - байт/слово/двойное/учетверенное слово. Единичное значение самого старшего бита (знак) является признаком отрицательного числа, которое хранится в дополнительном коде

  • 2. Двоично-десятичные числа (BCD — Binary Coded Decimal)
  • 8-разрядные

упакованные

Packed BCD

Содержат два десятичных разряда в одном байте

8-разрядные

неупакованные

Unpacked BCD

Содержат один десятичный разряд в байте (значения бит 7 : 4 при сложении и вычитании несущественны, при умножении и делении они должны быть нулевыми)

4 3

о

Двоично-десятичные 80-битовые упакованные числа

18 десятичных разрядов и знак

Форматы данных, обрабатываемых блоками ПЗ и векторными (ММХ/ХММ)

1. Действительные числа в формате с ПЗ

Формат IEEE-754,

одинарная

точность

Бит знака Порядок (8 бит)

Мантисса (24 бита)

II

0

1

1

1

1

1

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

  • 31 30
  • 2322

Номера битов

Single Precision 32 бит - 24 бит мантисса, 8 бит порядок

Вид данного

Английский эквивалент (или расшифровка)

Пояснения

Формат IEEE-754, двойная точность

Double Precision 64 бит - 52 бит мантисса, 11 бит порядок

Бит знака

І Порядок (11 бит)

-и-

Мантисса (52 бита)

  • 63 62
  • 52 51

Номера битов

Повышенной

точности

Extended Precision

  • 80 бит - 64 бит мантисса, 15 бит порядок
  • 2. Упакованные целые числа, со знаком и без (64 разряда — ММХ)

Восемь упакованных байт

Packed byte (В) о

Байт 7

Байт 6

Байт 5

Байт 4

Байт 3

Байт 2

Байт 1

Байт 0

Четыре упакованных слова

Packed word (W) о

Слово 3

Слово 2

Слово 1

Слово 0

Два упакованных двойных слова

Packed

doubleword (D) о

Двойное слово 1

Двойное слово 0

Учетверенное

СЛОВО

Quadword (Q) о

  • 3. Упакованные вещественные числа (64 разряда3DNow!)
  • 2 х 32 бита. Формат IEEE-754

Два упакованных двойных слова с ПЗ одинарной точности о

Двойное слово 1

Двойное слово 0

4. Упакованные вещественные и целые числа (128 разрядовSSE, AMD64)

Формат SSE

Четыре числа одинарной точности с ПЗ

Два двойной точности с ПЗ

О

Целое на 128 бит о

Формат SSE2

Два целых (2 х 64 бита) о

Четыре целых (4 х 32 бита)

О

Восемь коротких (8 X 16 бит)

О

Окончание табл. 1.10

Вид данного

Английский

эквивалент (или расшифровка)

Пояснения

Формат SSE2

16 байт (16x8 бит)

127 0

Указатели*

Длинный указатель (48 бит)

16-битовый селектор (или сегмент) и 32-битовое смещение

Короткий указатель

32-битовое смещение

Простой указатель

32 бит, единственный тип указателя для 8086 и 80286.16-битовый селектор (или сегмент) и 16-битовое смещение

* Указатель (пойнтер, pointer) — данное, содержащее адрес некоторой переменной в оперативной памяти. В языках программирования обычно присутствует функция ртр (X), определяющая адрес переменной х.

 
< Пред   СОДЕРЖАНИЕ     След >