в их мнемонике: увеличение или
Наконец, одноместные операции
1+,
1-,
2+,
2- выполняют действие, отраженное в их мнемонике: увеличение или уменьшение значения на вершине стека на 1 или 2; аналогично слово
2/ возвращает частное от деления своего параметра на 2. Эти слова включены в стандарт ввиду частого использования соответствующих действий.
Использование стека для хранения промежуточных значений естественным образом приводит к так называемой «обратной польской форме» — одному из способов бесскобочной записи арифметических выражений, подразумевающему постановку знака операции после операндов. Например, выражение
(A/B+C)*(D*E-F*(G-H)) записывается следующим образом:
A B / C + D E * F G H - * - *. Очевидно, что этот текст выполним для Форта, если
A,
B и т.д. — слова, которые кладут на стек по одному числу. Таким образом, форт-систему можно использовать как калькулятор. Чтобы вычислить, например, значение (25+18+32)*5, достаточно ввести такой текст:
25 18 + 32 + 5 * .. В ответ система напечатает (исполняя точку) ответ: 375.
Чтобы повысить точность вычислений в последовательности умножение-деление, стандарт предусматривает два необычных слова:
*/ A,B,C ---> частное от (A*B/C) */MOD A,B,C ---> остаток, частное от (A*B/C)
Особенность этих слов состоит в том, что промежуточный результат А*В вычисляется с двойной точностью, и в качестве делимого для С используются все его 32 разряда. Окончательные же результаты являются 16-разрядными числами.
Наряду с описанной выше 16-разрядной арифметикой, язык Форт имеет полный набор средств для работы с 32-разрядными целыми числами через стандартное расширение двойной точности. Внутренним представлением таких чисел является 32-разрядный двоичный дополнительный код, представляющий их как числа со знаком в диапазоне от -2147483648 до +2147483647 или как числа без знака в диапазоне от 0 до 4294967295. При размещении в стеке числа двойной точности занимает два элемента: верхний — старшая половина, предыдущий — младшая.
Содержание Назад Вперед