Если в определении содержится число, например, : БОЛЬШЕ-НА-ДВАДЦАТЬ ( 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