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


ЧИСЛА СО ЗНАКОМ И БЕЗ ЗНАКА


В первой главе мы ввели слово NUMBER (ЧИСЛО).

Если слово INTERPRET (ИНТЕРПРЕТАТОР) не может найти введенную строку символов в словаре, то оно передает ее слову NUMBER, после чего NUMBER пытается прочесть всю совокупность символов как двоичное число. Когда NUMBER это удается, прочитанное число помещается в двоичной форме в стек NUMBER не проверяет числа на принадлежность их какому-либо диапазону1, поэтому может представлять вводимые числа либо как числа со знаком, либо как числа без знака. Например, при вводе любого числа в диапазоне от 32768 до 65535 NUMBER представит его в виде числа без знака, а любого значения в диапазоне от -32768 до -1 - как целое в двоичном дополнительном коде. Это важный момент: стек может быть использован для хранения целых чисел со знаком или целых чисел без знака. Будет ли некоторое двоичное значение интерпретироваться как целое со знаком или как целое без знака, зависит от выполняемых над ним операций. Вы выбираете то, что вам больше подходит в данной ситуации, а затем твердо придерживаетесь выбранного варианта.

1 Для начинающих. NUMBER не проверяет, выходит ли введенное вами в качестве числа одинарной длины значение за рамки соответствующего диапазона. Если вы ввели слишком большое число, то NUMBER преобразует его, но сохранит только 16 последних значащих цифр.

Ранее мы ввели слово ., которое выводит на печать из стека значение в виде целого со знаком:

65535 .-1 ok

Слово U. печатает то же самое двоичное представление как число без знака:

6S535 U. 65535 ok

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

Напоминаем, что буквой n обозначаются числа одинарной длины со знаком, а буквой u - числа одинарной длины без знака.

Ниже приводятся еще два слова, использующие числа без знака:U.R ( u ширина -- ) Вывод числа без знака. Число выровнено по правой границе поля заданной ширины.

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




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