Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
В информатике масштабный фактор — это число, используемое в качестве множителя для представления числа в другом масштабе, функционирующее аналогично степени в математике. Масштабный фактор применяется, когда необходимо представить набор чисел из реального мира в другом масштабе, чтобы он соответствовал определенному числовому формату. Хотя использование масштабного фактора расширяет диапазон представимых значений, оно также снижает точность, что может приводить к ошибкам округления при определенных вычислениях.
In computer science, a scale factor is a number used as a multiplier to represent a number on a different scale, functioning similarly to an exponent in mathematics. A scale factor is used when a real world set of numbers needs to be represented on a different scale in order to fit a specific number format. Although using a scale factor extends the range of representable values, it also decreases the precision, resulting in rounding error for certain calculations.
Применение
Некоторые числовые форматы могут быть выбраны для приложения из соображений удобства программирования или из-за определенных преимуществ, предоставляемых аппаратным обеспечением для данного формата чисел. Например, ранние процессоры не поддерживали аппаратную арифметику с плавающей точкой для представления дробных значений, поэтому целые числа использовались для хранения представлений реальных значений путем применения масштабирующего коэффициента к реальному значению. Аналогично, поскольку аппаратная арифметика имеет фиксированную разрядность (обычно 16, 32 или 64 бита, в зависимости от типа данных), масштабирующие коэффициенты позволяют представлять большие числа (путем ручного умножения или деления на указанный коэффициент), хотя и за счет точности. По необходимости это выполнялось программно, поскольку аппаратное обеспечение не поддерживало дробные значения. Масштабирующие коэффициенты также используются в числах с плавающей точкой и чаще всего являются степенями двойки. Например, формат двойной точности выделяет 11 бит для масштабирующего коэффициента (двоичный экспонент) и 53 бита для мантиссы, обеспечивая различные степени точности для представления разных диапазонов чисел и расширяя диапазон представимых чисел за пределы того, что можно было бы представить, используя 64 явных бита (хотя и за счет точности). В качестве примера потери точности, 16-битное беззнаковое целое число (uint16) может хранить только значение до 65 53510. Если беззнаковые 16-битные целые числа используются для представления значений от 0 до 131 07010, то будет введен масштабирующий коэффициент 1/2, так что масштабированные значения будут точно соответствовать реальным четным целым числам. Как следствие, например, число 3 не может быть представлено, поскольку хранимое значение 1 соответствует реальному значению 2, а хранимое значение 2 – реальному значению 4; недостаточно битов, чтобы избежать этой ошибки в данном представлении.
Certain number formats may be chosen for an application for convenience in programming, or because of certain advantages offered by the hardware for that number format. For instance, early processors did not natively support floating point arithmetic for representing fractional values, so integers were used to store representations of the real world values by applying a scale factor to the real value. Similarly, because hardware arithmetic has a fixed width (commonly 16, 32, or 64 bits, depending on the data type), scale factors allow representation of larger numbers (by manually multiplying or dividing by the specified scale factor), though at the expense of precision. By necessity, this was done in software, since the hardware did not support fractional value. Scale factors are also used in floating point numbers, and most commonly are powers of two. For example, the double precision format sets aside 11 bits for the scaling factor (a binary exponent) and 53 bits for the significand, allowing various degrees of precision for representing different ranges of numbers, and expanding the range of representable numbers beyond what could be represented using 64 explicit bits (though at the cost of precision). As an example of where precision is lost, a 16 bit unsigned integer (uint16) can only hold a value as large as 65,53510. If unsigned 16 bit integers are used to represent values from 0 to 131,07010, then a scale factor of 1/2 would be introduced, such that the scaled values correspond exactly to the real world even integers. As a consequence, for example, the number 3 cannot be represented, because a stored 1 represents a real world 2, and a stored 2 represents a real world 4; there are not enough bits available to avoid this error in this representation.