Начальный курс программирования на языке Форт

ОПЕРАЦИЯ МАСШТАБИРОВАНИЯ */


Приведенная ниже арифметическая операция весьма полезна, хотя и выглядит несколько необычно.*/ ( n1 n2 n3 -- Умножение, затем деление (n1*n2/nЗ). результат ) Промежуточный результат 32-разрядный.

Например, допустим, что в стеке содержатся три числа* ( 225 32 100 -- )

*/ сначала перемножит 225 на 32, а затем разделит полученный результат на 100. Эта операция особенно удобна для решения таких задач, как вычисление процентов. В частности, вы можете определить слово % следующим образом: : % ( n % - n') 100 */ ;

Введя число 225, а затем выражение 32 %

вы получите в стеке 32% от 225, т. е. 721.

Команда */ это не простое сочетание команд * и /. Она использует для промежуточного результата число удвоенной длины. «Что это значит?», - спросите вы. Предположим, вам нужно вычислить 34% от 2000. Вспомним, что операции над числами одинар-

1 Для любознательных Способ, при котором сначала перемножаются два чи ела. а затем полученное произведение делится на 100, применяется и при вы-пошении подобных вычислений вручную

ной точности, такие, как * и /, дают результаты в диапазоне от -32768 до +32767. Если вы введете выражение2000 34 * 100 /

(то получите неверный результат, поскольку промежуточное выражение (в нашем случае произведение) превышает 32767:

При выполнении же сдвоенной операции для промежуточного выражения применяется слово двойной длины, так что его разрядность позволяет помещать произведение любых двух чисел одинарной длины. Выражение 2800 34 100 */

дает правильный результат, так как конечное выражение находится в пределах диапазона одинарного представления чисел.



Содержание раздела