Оно устанавливает шестнадцатеричную систему счисления
Оно устанавливает шестнадцатеричную систему счисления так же, как 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 можно использовать для того, чтобы посмотреть, как различные числа представляются в различных системах счисления. Но давайте проделаем это в следующих упражнениях. Если у вас нет компьютера, проверьте ваши ответы по .
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий