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


ИСПОЛЬЗОВАНИЕ ЧИСЕЛ В ОПРЕДЕЛЕНИЯХ


Если в определении содержится число, например, : БОЛЬШЕ-НА-ДВАДЦАТЬ ( n - n+20) 20 + ;

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

Двоичное значение числа зависит от системы счисления, которая существует в системе на момент компиляции данного определения. Например, при вводе HEX : БОЛЬШЕ-НА-ДВАДЦАТЬ ( n -- n+20) 14 + ; DECIMAL

словарное определение должно содержать шестнадцатиричное значение 14, что соответствует десятичному значению 20(16 + 4). Впредь слово НЕСКОЛЬКО-БОЛЬШЕ будет всегда добавлять к содержимому стека эквивалент десятичного числа 20, независимо от текущей системы счисления. В том случае, когда вы поместите слово HEX внутрь определения, основание системы счисления будет изменяться при выполнении данного определения. Например, если вы определяете: DECIMAL : ПРИМЕР HEX 20 . DECIMAL ;

то число компилируется как двоичный эквивалент десятичного числа 20, поскольку во время компиляции текущей была DECIMAL (десятичная) система счисления. Во время выполнения произойдет следующее: ПРИМЕР 14 ok

Наше число выдается в шестнадцатиричной системе.

Заметьте, что число, помещенное внутри некоторого определения, называется литералом. (В отличие от слов, присутствующих в этом определении, которые ссылаются на другие определения, значение числа заключено в самом числе.)

Ниже приводится перечень слов Форта, рассмотренных в настоящей главе. U. ( u -- ) Вывод числа одинарной длины без знака с одним пробелом после него.

U.R ( u ширина -- ) Вывод числа без знака. Число выровнено по правой границе поля заданной ширины.

U< ( u1 u2 -- ? ) Помещение на стек истины в том случае, если u1<u2. Оба аргумента рассматриваются как числа одинарной длины без знака.

Стековая нотация для форматирования чисел:

ВЫРАЖЕНИЕ СОСТОЯНИЕ СТЕКА ТИП АРГУМЕНТОВ <# ... #> ( d -- а u) или 32-разрядный без знака ( u 0 - а и) 16-разрядный без знака

<# ... ( |d| -- а u) 32-разрядный со знаком, n SIGN #> где |d| является абсолют- или мым значением d, a n - верхней ячейкой d ( |n| 0 -- а u) 16-разрядный со знаком, где |n| - абсолютное значение n




Начало  Назад  Вперед