Введение

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

Применение

Некоторые числовые форматы могут быть выбраны для приложения из соображений удобства программирования или из-за определенных преимуществ, предоставляемых аппаратным обеспечением для данного формата чисел. Например, ранние процессоры не поддерживали аппаратную арифметику с плавающей точкой для представления дробных значений, поэтому целые числа использовались для хранения представлений реальных значений путем применения масштабирующего коэффициента к реальному значению. Аналогично, поскольку аппаратная арифметика имеет фиксированную разрядность (обычно 16, 32 или 64 бита, в зависимости от типа данных), масштабирующие коэффициенты позволяют представлять большие числа (путем ручного умножения или деления на указанный коэффициент), хотя и за счет точности. По необходимости это выполнялось программно, поскольку аппаратное обеспечение не поддерживало дробные значения. Масштабирующие коэффициенты также используются в числах с плавающей точкой и чаще всего являются степенями двойки. Например, формат двойной точности выделяет 11 бит для масштабирующего коэффициента (двоичный экспонент) и 53 бита для мантиссы, обеспечивая различные степени точности для представления разных диапазонов чисел и расширяя диапазон представимых чисел за пределы того, что можно было бы представить, используя 64 явных бита (хотя и за счет точности). В качестве примера потери точности, 16-битное беззнаковое целое число (uint16) может хранить только значение до 65 53510. Если беззнаковые 16-битные целые числа используются для представления значений от 0 до 131 07010, то будет введен масштабирующий коэффициент 1/2, так что масштабированные значения будут точно соответствовать реальным четным целым числам. Как следствие, например, число 3 не может быть представлено, поскольку хранимое значение 1 соответствует реальному значению 2, а хранимое значение 2 – реальному значению 4; недостаточно битов, чтобы избежать этой ошибки в данном представлении.