Язык программирования Форт


Что такое память ? - часть 5


Оно устанавливает шестнадцатеричную систему счисления так же, как DECIMAL устанавливает десятичную. Во многих версиях есть слова OCTAL и BINARY, которые устанавливают систему счисления 8 и 2 соответственно. Можно проиллюстрировать один важный момент с помощью следующих экспериментов. Попробуем ввести

DECIMAL 2 BASE ! BASE @ .

потом

DECIMAL 8 BАSЕ ! BASE @ .

и

DECIMAL 16 BASE BASE @ .

Во всех случаях вы увидите 10. Почему ? Основание числа во всех случаях представляется как 10, так как это -- два (в двоичной системе), 8 (десятичное) -- это 10 в восьмеричной системе и 16 (десятичное) представляется так же, как 10 в шестнадцатеричной системе. Как же тогда узнать, в какой системе мы находимся ? Вот слово, которое поможет это сделать:

: BASE? BASE @ DUP DECIMAL . BASE ! ;

Вы должны понимать, как оно работает. Если вы введете

16 BASE ! BASE?

то увидите, что на экране будет число 16, и после этого мы попрежнему останемся в шестнадцатеричной системе счисления. Вместе с тем, когда вы вводите

n BASE !

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

10 BASE !

ничего не произойдет. 10 в двоичной системе -- это десятичное число 2, но мы уже находимся в двоичной системе. А что произойдет, если ввести

10 BASE !

в шестнадцатеричной системе ? Как снова вернуться к основанию 10 ? Если вы были в шестнадцатеричной системе, можете ввести

A BASE !

А -- это шестнадцатеричное число, которое равно 10 (десятичное). Если вы забыли текущее основание, то слово DECIMAL всегда возвратит вас к основанию 10, независимо от того, в какой системе вы были до этого.

Приведем слово, которое показывает в двоичной системе счисления число, находящееся на вершине стека. Обратите внимание, что при этом оно не изменяет содержимое стека:

: .BIN (n - n) DUP BASE @ 2 BASE ! SWAP . BASE ! ;

Вы должны догадаться, как оно работает.

В качестве упражнения (и для использования впоследствии) опишите три слова: .ОСТ, .DEC и .HEX, которые будут печатать число из стека в восьмеричной, десятичной и шестнадцатеричной системе соответственно.Для этого вам надо изменить в слове .BIN всего один символ. Теперь мы сможем написать еще одно слово, которое даст возможность представить число в стеке одновременно в двоичной, восьмеричной, десятичной и шестнадцатеричной системах :

: .NUMS (n -) .BIN .ОСТ .DEC .HEX DROP ;

Слово .NUMS можно использовать для того, чтобы посмотреть, как различные числа представляются в различных системах счисления. Но давайте проделаем это в следующих упражнениях. Если у вас нет компьютера, проверьте ваши ответы по .




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