Масштабирование
Одно из решений проблемы связано с масштабированием (неявным умножением
на масштабный коэффициент) каждого числа, чтобы оно оставалось в диапазоне.
Этот способ оказывается довольно сложным, так как промежуточные результаты по
величине могут значительно отличаться от исходных данных и окончательных
результатов. Например, в операциях интегрирования и дифференцирования приходится
как-то аппроксимировать такие понятия, как "бесконечно малая величина" и
"бесконечность".
Однако трудности возникают и в таких кажущихся простыми задачах, как решение
системы линейных уравнений. Хотя ручное масштабирование до сих пор применяется в
тех задачах, где требуется высокая производительность, а диапазоны чисел
известны, оно связано с трудностями программирования, так как нужно заставить
компьютер следить за масштабами. Для этого к каждому числу присоединяется
некоторый индикатор масштаба. Если ограничиться масштабными коэффициентами,
являющимися степенями числа 2, то это эквивалентно указанию с каждым числом
второго числа, показывающего положение двоичной точки в первом числе. Позиция
двоичной точки может изменяться от числа к числу, т.е. она начинает "плавать".
Таким образом, мы подходим к представлению чисел с плавающей точкой. Процессор
80286, как и его предшественник микропроцессор 8086, не имеет команд,
оперирующих числами с плавающей точкой. Конечно, можно разработать библиотеку
подпрограмм, реализующих различные арифметические операции.
Однако операции над числами с плавающей точкой можно значительно ускорить,
если применить специализированные схемы. Для этого фирма Intel предлагает
численный процессор 80287. Микросхема 80287 выполняет операции с плавающей
точкой в 50 - 100 раз быстрее эквивалентных подпрограмм процессора 80286.
Программисты могут включать команды 80287 в программы для процессора 80286 так,
как будто они являются командами процессора 80286. Когда процессор 80286
встречает команду процессора 80287, он передает ее для выполнения этому
процессору. Возникает иллюзия того, что процессор 80286 может выполнять команды
с плавающей точкой. Точный механизм взаимодействия процессоров, незаметный для
программиста, рассмотрен.