Редактирование: Слово −
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''−''' (вычесть, читается «минус») — стандартное слово [[Каллисто]]. | '''−''' (вычесть, читается «минус») — стандартное слово [[Каллисто]]. Вычитание [[Десятичное число|десятичных чисел]]. | ||
− ( | − ( x1 x2 -- x3 ) Вычесть. x3 ← x1 − x2 | ||
[[Файл:CallistoConstVar.png|thumb|right|264px|Пример работы слова −]] | [[Файл:CallistoConstVar.png|thumb|right|264px|Пример работы слова −]] | ||
Вычитает x2 из x1, кладёт в [[Стек данных|стек]] разность x3. | |||
== Ввод слова − == | == Ввод слова − == | ||
В [[Режим NUM|режиме NUM]] нажмите [[Клавиша -|белую клавишу {{Серая клавиша|−}}]] | В [[Режим NUM|режиме NUM]] нажмите [[Клавиша -|белую клавишу {{Серая клавиша|−}}]] | ||
== − и | == Детали реализации == | ||
Слово − является «обёрткой» вокруг команды ЭКВМ [[−|команды ЭКВМ − «вычитание»]], вызывающей переполнение при результате, по модулю больше либо равном 10<sup>100</sup>. | |||
Обработка этой ошибки производится [[Встроенная программа|встроенной программой]]. Например, последовательность слов {{Текст на индикаторе|5E99 −5E99 −}} вызывает [[аварийный останов]] [[Каллисто]] с сообщением «Переполнение» в [[Строка комментариев|строке комментариев]]. Можно ввести с клавиатуры произвольное число в качестве значения «10<sup>100</sup>» и вернуться в [[Каллисто]], нажав [[Клавиша С/П|{{Чёрная клавиша|С/П}}]]. Подробнее см. статью [[Авост Каллисто]]. | |||
В случае [[Авост Каллисто|аварийного останова]] рекомендуется произвести [[COLD|«холодную перезагрузку»]] [[Каллисто]] с удалением всех введённых слов, нажав последовательно клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]]. | |||
Слово − также может использоваться для вычитания целых чисел, как в Форте. В этом случае разность x3 — также целое число, если её модуль не превышает 10<sup>12</sup>. | |||
== − в стандарте ANS Forth == | |||
6.1.0160 − "minus" CORE | 6.1.0160 − "minus" CORE | ||
( n1|u1 n2|u2 -- n3|u3 ) | ( n1|u1 n2|u2 -- n3|u3 ) | ||
Строка 15: | Строка 23: | ||
См.: 3.3.3.1 Выравнивание адреса. | См.: 3.3.3.1 Выравнивание адреса. | ||
== F− в стандарте ANS Forth == | |||
12.6.1.1425 F- "f-minus" FLOATING | 12.6.1.1425 F- "f-minus" FLOATING | ||
( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) | ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) | ||
Вычитает r2 из r1, возвращает r3. | Вычитает r2 из r1, возвращает r3. | ||
== − в предыдущем стандарте Forth-83 (англ.) == | |||
- w1 w2 -- w3 79 "minus" | - w1 w2 -- w3 79 "minus" | ||
w3 is the result of subtracting w2 from w1. | w3 is the result of subtracting w2 from w1. | ||
== − в стандарте Forth-79 (англ.) == | |||
- n1 n2 -- n3 134 "minus" | - n1 n2 -- n3 134 "minus" | ||
Subtract n2 from n1 and leave the difference n3. | Subtract n2 from n1 and leave the difference n3. | ||
== − в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
- n1 n2 --- diff L0 | - n1 n2 --- diff L0 | ||
Leave the difference of n1-n2. | Leave the difference of n1-n2. | ||
== | == История == | ||
Слово − | Слово − взято в [[Каллисто]] из Форта, где является одним из самых древних слов. Также каллистянское слово − выполняет функции слова F− из действующего стандарта Форта 1994 года. | ||
Слово − появилось в программе CURVE, написанной Чак Муром на [https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D0%BB Алголе] для Burroughs B5500 в 1964 году при работе на [https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальную ускорительную лабораторию SLAC] [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордского университета]. | |||
В 1970 году слово − работало в 2К×48бит версии Форта на Burroughs B-5500. | |||
В {{colorForth}} слово − используется для реализации [[Слово NOT|побитового отрицания]]. Чак Мур больше не считает арифметику чем-то настолько важным, чтобы влиять на язык программирования. | |||
Одноимённая [[−|команда −]] использовалась в советских ПМК, откуда в 2007 году перешла в систему команд ЭКВМ. Сам знак «−» для обозначения операции вычитания взят из арифметики. Впервые знак «−» появился в 1489 году, в учебнике «Быстрый и приятный счёт для всех торговцев» немецкого математика [https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%B4%D0%BC%D0%B0%D0%BD,_%D0%98%D0%BE%D0%B3%D0%B0%D0%BD%D0%BD Иоганна Видмана]. До этого вычитание обозначали [[Символ с кодом 109|латинской буквой m]] (minus), часто помечая эту букву [[~|тильдой]]. | |||
Порядок аргументов слова − одинаков в [[Каллисто]], Форте и [[Язык МК|языке МК]]. Он взят из [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C обратной польской записи], разработанной в 1954 году (''англ.'' [https://www.jstor.org/stable/2001990 Burks, A. W.; Warren, D. W.; Wright, J. B. (1954). "An Analysis of a Logical Machine Using Parenthesis-Free Notation"]) на основе польской (префиксной) записи, предложенной польским математиком [https://ru.wikipedia.org/wiki/%D0%9B%D1%83%D0%BA%D0%B0%D1%81%D0%B5%D0%B2%D0%B8%D1%87,_%D0%AF%D0%BD Яном Лукасевичем] в 1924 году. | |||
== | == Реализация == | ||
Слово − присутствовало в FORTH ИТЭФ и ФОРТ-ЕС, где работало только с целыми числами. | Слово − присутствовало в FORTH ИТЭФ и ФОРТ-ЕС, где работало только с целыми числами. | ||
В ядре ФОРТ-ЕС слово − определялось через [[ | В ядре ФОРТ-ЕС слово − определялось через [[слово +]], вот его описание и определение: | ||
<PRE> | <PRE> | ||
- W1,W2->W3 ВЫЧЕСТЬ W2 ИЗ W1 17 | - W1,W2->W3 ВЫЧЕСТЬ W2 ИЗ W1 17 | ||
Строка 106: | Строка 76: | ||
== Ссылки == | == Ссылки == | ||
* См. слова [[Слово +|+]], [[1−]], [[2−]], [[Слово ×|×]], [[Слово ÷|÷]] | * См. слова [[Слово +|+]], [[1−]], [[2−]], [[Слово ×|×]], [[Слово ÷|÷]] | ||
* См. также [[Символ -|символ −]] | * См. также [[Символ -|символ −]] | ||
Строка 119: | Строка 88: | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Арифметические операции Каллисто]] | [[Категория:Арифметические операции Каллисто]] | ||
[[Категория:Описание бета-версии Каллисто]] | |||
[[Категория:Слова, способные вызывать авост Каллисто]] | [[Категория:Слова, способные вызывать авост Каллисто]] | ||