При работе вычислительной машины в режиме с фиксированной запятой место запятой, отделяющей целую часть числа от дробной, остается постоянным для всех чисел, с которыми работает цифровая машина. При конструировании машин, работающих в режиме с фиксированной запятой, заранее устанавливают, какое количество разрядов отводится для целой части числа, а какое – дробной части.
Поясним сказанное примером. Допустим, что цифровая машина рассчитана на представление шестиразрядного десятичного числа, причем три разряда отводятся на целую часть числа, а три – на дробную, или, как принято говорить, запятая фиксирует после третьего цифрового разряда. В этом случае в машине могут быть представлены следующие числа:
+999.999,
+999.998,
… …
+000.001
000.000,
-000.001,
… …
-999.999.
Отметим сразу несколько недостатков, присущих методу представления чисел с фиксированной запятой. В машине, работающей в режиме фиксированной запятой, диапазон чисел, отличающийся от нуля, относительно невелик (в нашем примере - от 0.001 до 999.999). Любое число, меньшее по абсолютной величине минимального положительного числа, представленного машиной, будет записано в машине как нуль. Это так называемый машинный нуль. Кроме того, любое число, полученное в результате вычислений, не должно превышать абсолютного значения максимального числа, которое может быть представлено машиной (для нашего примера результат не должен превышать 999,999): в противном случае более высокие цифры числа будут потеряны, а результат вычисления искажен. Такое явление называется переполнением разрядной сетки.
Из-за этих недостатков режим фиксированной запятой неудобен для решения задач, включающих разнообразные и обширные расчеты, выполняемые на числах из достаточно широкого диапазона. При работе в режиме фиксированной запятой необходимо заранее учитывать возможность переполнения битовой сетки (даже при подготовке задания к решению на станке). Для предотвращения переполнения исходные данные, включенные в задачу, должны быть умножены на соответствующие коэффициенты масштабирования (scaled). Масштабные коэффициенты подбираются таким образом, чтобы все значения, задействованные в арифметических операциях после масштабирования, находились в допустимых для данной машины пределах. В то же время следует также предусмотреть, что результаты расчетов также находятся в допустимых пределах.
Кроме того, масштабные коэффициенты должны, по возможности, приближать цифры, фактически участвующие в расчетах, к верхнему пределу. Это требование объясняется тем, что при работе машины в режиме фиксированной точки малые абсолютные числа могут быть представлены значительно меньшим числом значащих цифр, то есть с меньшей относительной точностью, чем числа, близкие к верхнему пределу. Поэтому масштабные коэффициенты для различных величин, участвующих в расчетах, могут быть разными. Кроме того, эти коэффициенты могут быть изменены в ходе расчетов.
Введение масштабных множителей, как правило, сильно усложняет расчетные формулы, входящие в алгоритм решения задачи. Подбор этих множителей является делом очень сложным и в большей степени зависит от опытности математика, подготавливающего задачу для решения на машине. Поэтому режим работы с фиксированной запятой обычно применяется только в малых и специализированных ЭВМ; такие машины являются менее сложными и, следовательно, более дешевыми, чем машины, которые могут работать в режиме с плавающей запятой.
Ячейка памяти машины, содержащая число с фиксированной запятой, имеет знаковый разряд и цифровые разряды. Разряды ячейки нумеруются слева направо, начиная с нуля. Знак числа указывается в нулевом (знаковом) разряде ячейки следующим образом: плюс изображается нулем, а минус – единицей. Двоичная запись числа помещается в цифровые разряды ячейки (с первого по (n-1)-ый в n-рязрядной ячейке), причем каждый разряд числа записывается в строго определенном месте в зависимости от его удаления от запятой. Чаще всего запятая фиксируется перед первым (старшим) цифровым разрядом. Тогда, например, двоичное число +0.101100111000101 в шестнадцатиразрядной ячейке ЭВМ запишется следующим образом: