0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
… |
23 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
… |
0 |
Знак числа |
Знак порядка |
Порядок |
Мантисса | В ЭВМ применяется чаще всего одна из двух форм представления чисел:
– с фиксированной запятой (точкой);
– с плавающей запятой (точкой).
Числа представляются в машинном слове, имеющем для конкретной ЭВМ всегда фиксированное число разрядов (битов). Это число является одной из важнейших характеристик любой ЭВМ и называется разрядностью машины. Разные разряды слова при кодировании команд и данных имеют несовпадающие функциональные назначения. При рассмотрении их функций используют также термин «разрядная сетка машины».
В числах с фиксированной (естественной) запятой положение запятой в разрядной сетке машины заранее обусловлено для всех чисел раз и навсегда. Место запятой, отделяющей целую часть числа от дробной, определяется на этапе конструирования ЭВМ. Сразу же указывается количество разрядов, отводимых для изображения целой и дробной частей.
Единственной особенностью, о которой необходимо упомянуть, является ситуация, которая носит название «переполнение разрядной сетки» (переполнение с фиксированной запятой) и которая возникает, когда результат умножения превышает максимально возможное для данной разрядности значение. Эта ситуация считается в ЭВМ исключительной. При ее возникновении записать получившееся значение невозможно. В этом случае устанавливается в «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. возможны следующие изображения:
Р |
0100 (4) |
0101 (5) |
0110 (6) |
А |
0.110100 |
0.011010 |
0.001101 |
Местоположение запятой при этом тоже строго фиксируется: считается, что мантисса всегда представляется как число, меньшее единицы, но такое, в котором первая цифра после запятой для всех абсолютно чисел отлична от нуля (единственное исключение составляет число 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-разрядной ячейке будет выглядеть в следующем виде:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
… |
23 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
… |
0 |
Знак числа |
Знак порядка |
Порядок |
Мантисса |
Пример, -9,5(10) = -1001,1(2) = -0,10011∙10100 в 24-разрядной ячейке будет выглядеть в следующем виде:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
… |
23 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
… |
0 |
Знак числа |
Знак порядка |
Порядок |
Мантисса |
Для повышения точности представления чисел используется запись чисел с так называемой двойной точностью. В этом случае число записывается не в одной, а в двух подряд идущих ячейках памяти, причем вторая ячейка используется для записи последующих цифр мантиссы.
Форма представления чисел с плавающей запятой позволяет записывать числа из весьма широкого диапазона и с достаточно высокой точностью. Что является преимуществом данной формы. Недостатком формы представления чисел в форме с плавающей запятой является значительное усложнение арифметических операций.
|