Редактирование: 0=
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''0=''' (нулю равно) — стандартное слово [[Каллисто]]. Проверить на равенство нулю. | '''0=''' (нулю равно) — стандартное слово [[Каллисто]]. Проверить на равенство нулю. | ||
0= ( x -- f ) Проверка на равенство нулю. | 0= ( x -- f ) Проверка на равенство нулю. | ||
Сравнивает x с нулём и засылает в стек флаг «истинно» (f=−1), если x равен нулю и флаг «ложно» (f=0), если x отличен от нуля. | |||
Сравнивает x с | |||
== Ввод слова 0= == | == Ввод слова 0= == | ||
В [[Режим NUM|режиме NUM]] последовательно нажмите три клавиши [[Клавиша 0|{{Серая клавиша|0}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] {{ШГ←}} | В [[Режим NUM|режиме NUM]] последовательно нажмите три клавиши [[Клавиша 0|{{Серая клавиша|0}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] | ||
== 0= и | == Детали реализации == | ||
Если на стеке лежит логическое значение (флаг), слово 0= меняет его противоположное. Флаг «истинно» (x=−1 и любое ненулевое значение) превращается во флаг «ложно» (f=0). Флаг «ложно» (x=0) превратится во флаг «истинно» (f=−1). Этим объясняется широкая практика использования 0= для логического отрицания. Фактически это слово NOT, и во многих Фортах оно имеет такое второе название. | |||
Слово 0= возвращает −1 в качестве флага «истинно», что позволяет использовать результат f в логических операция [[Слово AND|AND]], [[Слово OR|OR]], [[Слово XOR|XOR]] и [[Слово NOT|NOT]]. Разумеется, при этом другие аргументы этих операций тоже должны использовать −1 в качестве флага «истинно». Все слова [[Каллисто]], возвращающие флаги, используют в качестве флага «истинно» −1. | |||
В отличии от [[Слово NOT|NOT]], слово 0= превращает во флаг «ложь» не только −1, но и любое ненулевое значение. Применив 0= дважды, можно «нормализовать» флаг, превратив любое ненулевое значение в −1. | |||
== 0= в стандарте ANS Forth == | |||
6.1.0270 0= "zero-equals" CORE | 6.1.0270 0= "zero-equals" CORE | ||
( x -- flag ) | ( x -- flag ) | ||
flag - true, если и только если x - равно нулю. | flag - true, если и только если x - равно нулю. | ||
== F0= в стандарте ANS Forth == | |||
12.6.1.1450 F0= "f-zero-equals" FLOATING | 12.6.1.1450 F0= "f-zero-equals" FLOATING | ||
( -- flag ) ( F: r -- ) or ( r -- flag ) | ( -- flag ) ( F: r -- ) or ( r -- flag ) | ||
flag - true, если и только если r - равно нулю. | flag - true, если и только если r - равно нулю. | ||
== 0= в предыдущем стандарте Forth-83 (англ.) == | |||
0= w -- flag 83 "zero-equals" | 0= w -- flag 83 "zero-equals" | ||
flag is true if w is zero. | flag is true if w is zero. | ||
== 0= в стандарте Forth-79 (англ.) == | |||
0= n -- flag 180 "zero-equals" | 0= n -- flag 180 "zero-equals" | ||
True if n is zero. | True if n is zero. | ||
== 0= в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
0= n --- f L0 | 0= n --- f L0 | ||
Leave a true flag is the number is equal to zero, otherwise leave a | Leave a true flag is the number is equal to zero, otherwise leave a | ||
false flag. | false flag. | ||
== | == История == | ||
В 1968 году Чак Мур работал в Mohasco Industries, Inc ([https://en.wikipedia.org/wiki/Amsterdam_%28city%29,_New_York Amsterdam NY], ''англ.''). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово 0= | |||
В Форте-79 слово NOT было определено, как синоним 0= | |||
Если программы переносятся с Форта-79 или fig-Форта на [[Каллисто]], их слово NOT должно заменяться на 0= | |||
== Реализация == | |||
Слово 0= в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | Слово 0= в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | ||
<PRE> | <PRE> | ||
Строка 119: | Строка 72: | ||
== Ссылки == | == Ссылки == | ||
* {{Исходник|ZeroEqual|0 | * {{Исходник|ZeroEqual|0=}} | ||
* См. слова [[NOT]], [[Слово =|=]], [[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 ''(англ.)'' | ||
Строка 128: | Строка 81: | ||
{{нет иллюстраций}} | |||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
Строка 133: | Строка 87: | ||
[[Категория:Одноместные операции Каллисто]] | [[Категория:Одноместные операции Каллисто]] | ||
[[Категория:Операции сравнения Каллисто]] | [[Категория:Операции сравнения Каллисто]] | ||
[[Категория: | [[Категория:Описание бета-версии Каллисто]] | ||