0=: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
0= ( x -- f ) | 0= ( x -- f ) | ||
Сравнивает x с нулём и засылает в стек флаг «истинно» (f=-1), если x | Сравнивает x с нулём и засылает в стек флаг «истинно» (f=-1), если x равен нулю и флаг «ложно» (f=0), если x отличен от нуля. | ||
== Детали реализации == | == Детали реализации == |
Версия от 14:00, 26 октября 2015
0= (нулю равно) — стандартное слово Каллисто. Проверка на равенство нулю.
0= ( x -- f )
Сравнивает x с нулём и засылает в стек флаг «истинно» (f=-1), если x равен нулю и флаг «ложно» (f=0), если x отличен от нуля.
Детали реализации
Если на стеке лежит логическое значение (флаг), слово 0= меняет его противоположное. Флаг «истинно» (x=-1 и любое ненулевое значение) превращается во флаг «ложно» (f=0). Флаг «ложно» (x=0) превратится во флаг «истинно» (f=-1). Этим объясняется широкая практика использования 0= для логического отрицания.
Слова Каллисто возвращают -1 в качестве флага «истинно», что позволяет использовать результат слова 0= в логических операция AND, OR, XOR и INVERT. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно».
В отличии от INVERT, слово 0= превращает во флаг «ложь» не только -1, но и любое ненулевое значение. Применив 0= дважды, можно «нормализовать» флаг, превратив любое ненулевое значение в -1.
0= в стандарте ANS Forth
6.1.0270 0= "zero-equals" CORE ( x -- flag ) flag - true, если и только если x - равно нулю.
F0= в стандарте ANS Forth
12.6.1.1450 F0= "f-zero-equals" FLOATING ( -- flag ) ( F: r -- ) or ( r -- flag ) flag - true, если и только если r - равно нулю.
0= в предыдущем стандарте Forth-83 (англ.)
0= w -- flag 83 "zero-equals" flag is true if w is zero.
0= в стандарте Forth-79 (англ.)
0= n -- flag 180 "zero-equals" True if n is zero.
0= в fig-FORTH Release 1 glossary, май 1979 (англ.)
0= n --- f L0 Leave a true flag is the number is equal to zero, otherwise leave a false flag.
История
В Форте-79 слово NOT было определено, как синоним 0= и это привело к тому, что от слова NOT в Каллисто пришлось отказаться.
Если программы переносятся с fig-Форта на Каллисто, их слово NOT должно заменяться на 0=
Ссылки
- См. слова INVERT 0< 0>
- Слово 0= (zero-equals) в стандарте ANS Forth (англ.)
- Слово F0= (f-zero-equals) в стандарте ANS Forth (англ.)
- Слово 0= (zero-equals) в черновике Forth 200x (англ.)
- Слово F0= (f-zero-equals) в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |