В ЭВМ применяется чаще всего одна из двух форм представления чисел: – с фиксированной запятой (точкой);
– с плавающей запятой (точкой).
Числа представляются в машинном слове, имеющем для конкретной ЭВМ всегда фиксированное число разрядов (битов). Это число является одной из важнейших характеристик любой ЭВМ и называется разрядностью машины. Разные разряды слова при кодировании команд и данных имеют несовпадающие функциональные назначения. При рассмотрении их функций используют также термин «разрядная сетка машины». В числах с фиксированной (естественной) запятой положение запятой в разрядной сетке машины заранее обусловлено для всех чисел раз и навсегда. Место запятой, отделяющей целую часть числа от дробной, определяется на этапе конструирования ЭВМ. Сразу же указывается количество разрядов, отводимых для изображения целой и дробной частей. Единственной особенностью, о которой необходимо упомянуть, является ситуация, которая носит название «переполнение разрядной сетки» (переполнение с фиксированной запятой) и которая возникает, когда результат умножения превышает максимально возможное для данной разрядности значение. Эта ситуация считается в ЭВМ исключительной. При ее возникновении записать получившееся значение невозможно. В этом случае устанавливается в «1» специальный флаг переполнения, старший бит результата (бит переноса из старшего разряда слова) теряется, а в качестве результата выдается искаженное число. Описываемая ситуация не считается критической, и после окончания данной операции вычисления продолжаются. Таким образом, программист сам должен позаботиться о корректной реакции на возникновение переполнения, используя для обнаружения указанной ситуации содержимое флага переполнения. Иначе обстоит дело с операцией деления. При делении целого числа на другое целое результат совсем не обязательно должен быть целым. А поскольку и результат должен быть представлен целым числом, возникает коллизия. Таким образом, естественная форма приводит к некоторым неудобствам. При работе с ней постоянно приходится следить за правильным и эффективным использованием разрядной сетки, чтобы числа не выходили за старший разряд и в то же время, чтобы старшие разряды использовались как значащие. Основное преимущество данной формы – простота арифметических операций, недостаток – слишком узкий диапазон представления чисел. Для того чтобы автоматизировать действия по эффективному использованию всей разрядной сетки, а также значительно увеличить диапазон изображения чисел, в ЭВМ введена еще одна форма представления чисел – с плавающей точкой, или полулогарифмическая. Эта форма основана на том, что в изображения чисел введен дополнительный коэффициент Ар, т.е. [X]п.т.= Ар M, где [X]п.т.– полулогарифмическая форма представления чисел;
р – степень основания порядка, или просто порядок;
А – основание порядка; М – мантисса, определяющая числовое значение.
Основание порядка А для каждой ЭВМ постоянно, назначается заранее и подразумевается, а само изображение с порядками формируется из двух частей: порядка и мантиссы. В форме с плавающей запятой число представляется двумя компонентами: мантиссой и порядком. Мантисса используется для записи цифр числа, а порядок – для указания положения запятой. Разрядная сетка машины в этом случае делится на несколько частей: – один разряд – для кодирования знака числа (это всегда самый старший, левый, разряд слова);
– M разрядов – для записи мантиссы;
– Р разрядов – для записи порядка (с учетом его знака).
Порядок р содержит знаковый разряд, от значения которого коэффициент А может быть целым или дробным. Мантисса числа всегда считается дробной, а знак мантиссы определяет знак всего числа. Например, в десятичной системе счисления число 3,14 представим в виде 3,14 = 0,314∙101, где мантисса равна 0,314, а порядок 1. Очевидно, такое представление далеко не однозначно. Можно ведь 3,14 записать так: 3,14 = 3,14∙100 = 31,4∙10-1 = 0,0314∙102 = …, Порядок числа определяет положение запятой в записи мантиссы. При корректировке порядка соответствующим образом меняется и положение запятой – запятая как бы «плавает». Отсюда и название метода представления чисел. Полулогарифмическая форма приводит к неоднозначности изображения, поскольку одно и тоже число может быть изображено по–разному. Например, пусть А=2. изобразить в полулогарифмической форме число 1310=11012. возможны следующие изображения:
Местоположение запятой при этом тоже строго фиксируется: считается, что мантисса всегда представляется как число, меньшее единицы, но такое, в котором первая цифра после запятой для всех абсолютно чисел отлична от нуля (единственное исключение составляет число 0). Такая форма представления мантиссы называется нормализованной. Иначе говорят, что мантисса нормализована (приведена к виду: 1 < M ≤ 0,1), например, для числа 3,14 нормализованная форма будет выглядеть так: 3,14 = 0,314∙101. Для числа -0,00062, получим форму -0,62∙10-3 (мантисса равна -0,62, а порядок равен -3), причем это форма будет нормализованной. Если известно, что мантисса имеет вид «0,xxxx..», то ее код в машинном слове может не содержать символов «0,», а местоположение запятой предполагается перед старшей значащей цифрой мантиссы. Порядок Р всегда представляется целым числом со знаком + или -. А для кодирования абсолютной величины порядка остается (Р-1) цифр. Например, число, записанное в двоичной системе счисления 110(2) (6(10)=110(2)) можно представить в двоичной нормализованной форме в виде 110(2) = 0,11∙23, или используя только двоичные цифры, получим 110(2) = 0,11∙1011. При представлении чисел с плавающей запятой в ячейке памяти ЭВМ выделяют группы разрядов для изображения мантиссы, порядка, знака числа и знака порядка. Если в ячейке 24 разряда, то, перенумеровав их с нулевого номера по двадцать третий, можно распределить их, например, следующим образом: нулевой разряд отвести под знак числа, первый – под знак порядка, в следующих семи разрядах, т.е. со 2-го по 8-й – порядок, и, наконец, с 9-го по 23-й разряды отводятся под мантиссу числа. Причем знак «+» обозначается 0, а «–» обозначается 1. Пример, 4(10) = 100(2) = 0,1∙1011 в 24-разрядной ячейке будет выглядеть в следующем виде:
Пример, -9,5(10) = -1001,1(2) = -0,10011∙10100 в 24-разрядной ячейке будет выглядеть в следующем виде:
Для повышения точности представления чисел используется запись чисел с так называемой двойной точностью. В этом случае число записывается не в одной, а в двух подряд идущих ячейках памяти, причем вторая ячейка используется для записи последующих цифр мантиссы.
Форма представления чисел с плавающей запятой позволяет записывать числа из весьма широкого диапазона и с достаточно высокой точностью. Что является преимуществом данной формы. Недостатком формы представления чисел в форме с плавающей запятой является значительное усложнение арифметических операций. |