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

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

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

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

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

+00721,35500; +00000,00328; -10301,20260.

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

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

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

В памяти ЭВМ числа с фиксированной запятой хранятся в трех форматах:

  • • полуслово — это обычно 16 бит или 2 байта;
  • • слово — 32 бита или 4 байта;
  • • двойное слово — 64 бита или 8 байтов.

Отрицательные числа с ФЗ записываются в разрядную сетку

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

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

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

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

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

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

+ 0,721355 х Ю3;

+ 0,328 х 10" 3;

-0,103012026 х Ю5.

Форма представления с ПЗ обеспечивает значительный диапазон отображения чисел и является основной в современных компьютерах. Так, диапазон значащих чисел в системе счисления с основанием Р при наличии т разрядов у мантиссы и s разрядов у порядка (без учета знаковых разрядов порядка и мантиссы) будет

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

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

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

  • 10,3510 = 0,103510 х 10+2;
  • 0, 00007245s = 0,72458 х8"4;

F5C, 9В = 0, F5C9B16 х 1б+3.

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

  • 1) слово — 32 бита или 4 байта (одинарная точность);
  • 2) двойное слово — 64 бита или 8 байт (двойная точность).

Разрядная сетка для чисел с ПЗ (формат ШЕЕ 754) имеет

следующую структуру (нумерация битов начинается с нуля):

  • • 31-й (63-й) разряд — знак числа (0 — «минус», 1 — «плюс»);
  • • с 30-го по 23-й (8 бит для одинарной точности) или с 62-го по 52-й (11 бит для двойной) разряды записывается порядок в прямом двоичном коде. В первом разряде указывается знак порядка (1 — «плюс» или 0 — «минус»);
  • • с 22-го по нулевой (24 бита для одинарной точности) или с 51-го по нулевой (52 бита для двойной) разряды размещается мантисса числа.

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

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

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

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

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

Прямой код числа TV (обозначим [ЛПпр).

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

  • • при N> 0 [7V]„P = 0, а2, аъ, ..., ат
  • • при N< 0 [ЛПпр = 1, а2, д3, ..., ат,
  • • при N=0 имеет место неоднозначность [0]пр = 0, 0... = 1, 0...

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

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

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

Обратный код числа TV (обозначим [ЛПобр).

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

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

=

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

Например,

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

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

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

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

. при N> 0 [А]доп = 0, а2, а3, ..., ат;

• при N< 0 [ЛПдоп = 1, ах, а2, а3, ..., ат + 0,00...1.

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

Например,

Для N= 1011, [ЛПдоп = 0,1011;

Для N= -1100, [А]доп = 1,0100;

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

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >