Смекни!
smekni.com

НН Трушин Информатика (стр. 12 из 37)

Рис. 4.2. Формат целых чисел без знака

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

В формате целого числа со знаком один из разрядов отводится для кодирования знака числа S (рис. 4.3). Обычно им является старший (левый) бит, а стандартное кодирование знака имеет такой вид: S = 0 – число положительное, S = 1 – число отрицательное.

Рис. 4.3. Формат целых знаковых чисел

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

Прямой код состоит в том, что знак числа помещается в старший разряд, а остальные биты используются для кодирования абсолютного значения числа. Диапазон представимых чисел составляет от -(2n-1-1) до +(2n-1-1). Число нуль при этом может быть как положительным (ему соответствует набор бит 00...00), так и отрицательным (10...00). Последнее обстоятельство является недостатком такого представления числа, поэтому прямой код получил ограниченное применение в ЭВМ.

Дополнительный код состоит в том, что общий формат знаковых целых чисел сохраняется, но меняется кодирование отрицательных чисел. Положительные числа от 0 до 2n-1 представляются в прямом коде, а для отрицательных чисел используется особое кодирование: число –1 кодируется битовым набором 11...11, а число –2n-1 – битовым набором 10...00.

Получение дополнительного кода отрицательного числа -x производится по следующему правилу:

xдоп.код. 2n x ,

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

Дополнительный код позволяет иметь единственное представление нуля 00...00. Диапазон представимых чисел при этом от -2n-1 до +(2n-1-1). Очевидно, что диапазоны отрицательных и положительных чисел не являются симметричными. Обычная длина такого формата один, два или четыре байта.

4.4.2. Вещественные числа с плавающей точкой

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

(M)E().

Здесь число изображается как произведение некоторого другого числа на степень числа 10, являющегося основанием десятичной системы счисления. Число M называется мантиссой или значащей частью числа. Мантисса может быть любым знаковым числом, ее знак определяет знак всего числа. Число  называется порядком или экспонентой. Порядок может быть только целым знаковым числом. Буква Е обозначает основание десятичной системы счисления и разделяет мантиссу и порядок. Чтобы сообщить о представлении числа с повышенной точностью вместо буквы Е записывается буква D (от Double – удвоенный); в этом случае для мантиссы отводится больше разрядов.

Порядок определяет фактическое положение десятичной точки вместо положения, которое она занимает в изображении мантиссы. Если порядок положительный, точка перемещается ("плывет" – отсюда и название формата) вправо на число разрядов, равное значению порядка. Если порядок отрицательный, точка перемещается ("плывет") влево.

Пример. Запись вещественных чисел:

–0.0956Е+2 = –9.56 = –0.0956·10+2 ;

+1.289Е-3 = +0.001289 = +1.289·Е10–3 .

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

Рис. 4.4. Классический формат числа с плавающей точкой

Формат состоит из четырех полей:

• код знака мантиссы Sм (он совпадает со знаком всего числа);

• код мантиссы длиной n бит, являющейся правильной дробью;

• код знака порядка Sп;

• код порядка длиной p бит, являющегося целым числом.

Мантисса и порядок представляются в прямом коде.

Количество бит мантиссы и порядка существенно влияют на диапазон и точность представимых нормализованных чисел. Диапазон представимых чисел определяется только количеством битов порядка. Для расчета минимального и максимального чисел предназначены следующие формулы: Xmin 22p ;

p p

Xmax (12n )22 1 22 1.

С увеличением числа бит порядка диапазон представимых чисел очень быстро расширяется как в область очень больших, так и в область очень малых значений: p6 Zmin 264 1019 ;

Zmax 263 1019 ;

p7 Zmin 2128 1038 ;

Zmax 2128 1038 ; p8Zmin 2256 1076 ;

Zmax 2256 1076.

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

Количество бит мантиссы определяет точность представления чисел. Точность определяется максимальным значением относительной ошибки e, вычисляемой по формуле emax 2n1. При этом имеют место следующие соотношения: n24emax 223 107 ; n32emax 231 109 ;

55 1016 ;n56emax 2 n64emax 263 1019.

Про относительную ошибку 10N говорят, что числа представимы с точностью N-го десятичного разряда либо точность представления чисел составляет N десятичных разрядов (цифр). Например, длина мантиссы 56 бит соответствует точности представления чисел до 16-го десятичного разряда.

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

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

Типы и форматы данных, которыми оперируют современные вычислительные системы, установлены международным стандартом IEEE-854.

В языках программирования традиционно существуют две разновидности формата чисел с плавающей точкой: нормальной точности (длина формата 4 байта) и удвоенной точности (длина формата 8 байт). Точность представления таких чисел составляет 6-7 и 15-16 десятичных разрядов соответственно.

Арифметический сопроцессор IBM-совместимых ПЭВМ может работать с вещественными числами расширенной точности, занимающими в памяти 10 байт. Точность представления таких чисел составляет 19-20 десятичных разрядов.

Необходимо отметить, что из-за сложного формата представления вещественных чисел с плавающей точкой производительность ЭВМ при обработке данных, содержащих вещественные числа, существенно ниже, чем при обработке данных, содержащих только целочисленные значения. Производительность – это одна основных оценок качества вычислительной машины, определяемая аналитическим или экспериментальным путем. Она отражает количество обобщенных операций (команд процессора), выполняемых ЭВМ в единицу времени. Производительность процессоров современных ЭВМ обычно измеряется в миллионах целочисленных операций в секунду (MIPS) или в миллионах операций с плавающей точкой в секунду (MFLOPS, мегафлопс). Так, например, производительность 32-разрядного микропроцессора Intel Celeron с тактовой частотой 700 МГц, предназначенного для массовых моделей IBM-совместимых ПЭВМ, составляет примерно 315 MIPS и 39 MFLOPS (эти параметры определены с помощью тестовой программы PC-DOCTOR фирмы Watergate Software Inc). Для сравнения, производительность 16-разрядного микропроцессора Intel 8088 с тактовой частотой 4,77 МГц, который использовался в компьютерах IBM PC и PC/XT, составляла всего 0,4 MIPS.