0=: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 10: Строка 10:
Если на стеке лежит логическое значение (флаг), слово 0= меняет его противоположное. Флаг «истинно» (x=-1 и любое ненулевое значение) превращается во флаг «ложно» (f=0). Флаг «ложно» (x=0) превратится во флаг «истинно» (f=-1). Этим объясняется широкая практика использования 0= для логического отрицания. Фактически это слово NOT, и во многих Фортах оно имеет такое второе название.
Если на стеке лежит логическое значение (флаг), слово 0= меняет его противоположное. Флаг «истинно» (x=-1 и любое ненулевое значение) превращается во флаг «ложно» (f=0). Флаг «ложно» (x=0) превратится во флаг «истинно» (f=-1). Этим объясняется широкая практика использования 0= для логического отрицания. Фактически это слово NOT, и во многих Фортах оно имеет такое второе название.


Слово 0= возвращает -1 в качестве флага «истинно», что позволяет использовать результат f в логических операция [[AND]], [[OR]], [[XOR]] и [[INVERT]]. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова [[Каллисто]], возвращающие флаги, используют в качестве флага «истинно» -1.
Слово 0= возвращает -1 в качестве флага «истинно», что позволяет использовать результат f в логических операция [[AND]], [[OR]], [[XOR]] и [[Слово NOT|NOT]]. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова [[Каллисто]], возвращающие флаги, используют в качестве флага «истинно» -1.


В отличии от [[INVERT]], слово 0= превращает во флаг «ложь» не только -1, но и любое ненулевое значение. Применив 0= дважды, можно «нормализовать» флаг, превратив любое ненулевое значение в -1.
В отличии от [[Слово NOT|NOT]], слово 0= превращает во флаг «ложь» не только -1, но и любое ненулевое значение. Применив 0= дважды, можно «нормализовать» флаг, превратив любое ненулевое значение в -1.


== 0= в стандарте ANS Forth ==
== 0= в стандарте ANS Forth ==
Строка 38: Строка 38:


== История ==
== История ==
В Форте-79 слово NOT было определено, как синоним 0= и это привело к тому, что от слова NOT в [[Каллисто]] пришлось отказаться.
В Форте-79 слово NOT было определено, как синоним [[0=]]


Если программы переносятся с fig-Форта на [[Каллисто]], их слово NOT должно заменяться на 0=
Если программы переносятся с fig-Форта на [[Каллисто]], их слово NOT должно заменяться на 0=


== Ссылки ==
== Ссылки ==
* См. слова [[INVERT]] [[0⟨|0<]] [[0⟩|0>]]
* См. слова [[Слово NOT|NOT]] [[0⟨|0<]] [[0⟩|0>]]
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0270 0= (zero-equals)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1450 F0= (f-zero-equals)] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0270 0= (zero-equals)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1450 F0= (f-zero-equals)] в стандарте ANS Forth ''(англ.)''
* Слова [http://www.forth200x.org/documents/html3/core/ZeroEqual.html 0= (zero-equals)] и [http://www.forth200x.org/documents/html3/floating/FZeroEqual.html F0= (f-zero-equals)] в черновике Forth 200x ''(англ.)''
* Слова [http://www.forth200x.org/documents/html3/core/ZeroEqual.html 0= (zero-equals)] и [http://www.forth200x.org/documents/html3/floating/FZeroEqual.html F0= (f-zero-equals)] в черновике Forth 200x ''(англ.)''

Версия от 05:34, 26 февраля 2016

0= (нулю равно) — стандартное слово Каллисто. Проверить на равенство нулю.

0=             ( x -- f )

Сравнивает x с нулём и засылает в стек флаг «истинно» (f=-1), если x равен нулю и флаг «ложно» (f=0), если x отличен от нуля.

Ввод слова 0=

В режиме NUM последовательно нажмите три клавиши  0     F   ШГ← 

Детали реализации

Если на стеке лежит логическое значение (флаг), слово 0= меняет его противоположное. Флаг «истинно» (x=-1 и любое ненулевое значение) превращается во флаг «ложно» (f=0). Флаг «ложно» (x=0) превратится во флаг «истинно» (f=-1). Этим объясняется широкая практика использования 0= для логического отрицания. Фактически это слово NOT, и во многих Фортах оно имеет такое второе название.

Слово 0= возвращает -1 в качестве флага «истинно», что позволяет использовать результат f в логических операция AND, OR, XOR и NOT. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова Каллисто, возвращающие флаги, используют в качестве флага «истинно» -1.

В отличии от NOT, слово 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=

Если программы переносятся с fig-Форта на Каллисто, их слово NOT должно заменяться на 0=

Ссылки


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.