Редактирование: XOR
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''XOR''' (исключающее | '''XOR''' (исключающее ИЛИ) — стандартное слово [[Каллисто]]. 32-битное поразрядное логическое исключающее ИЛИ. | ||
XOR ( | XOR ( i1 i2 -- i3 ) | ||
Выполняет поразрядное логическое исключающее "ИЛИ" (сложение по модулю два) для 32-битных чисел i1 и i2, результат i3 заносится в [[Стек данных|стек]]. | |||
== | Другими словами, каждый бит числа i1 сравнивается с соответствующим битом числа i2 и, если один из них (но не оба) равен единице, в соответствующий бит числа i3 заносится единица. В противном случае, когда оба рассматриваемых бита совпадают, соответствующий бит результата i3 будет равен нулю. | ||
В [[ | |||
== Детали реализации == | |||
В [[Каллисто]] для записи 32-битных целых чисел в [[Стек данных|десятичном стеке]] используется [[дополнительный код]] (''англ.'' two's complement). На входе слово XOR принимает как 32-битные целые в [[Дополнительный код|дополнительном коде]], так и беззнаковые целые. Результат i3 всегда представлен в [[Дополнительный код|дополнительном коде]] и отрицателен, если старший бит в нём установлен. | |||
XOR даёт правильный результат побитового исключающего "ИЛИ" над числами любой разрядности, меньшей 32, включая 24-, 16- и 8-битные числа. Если оба аргумента разрядности меньше, чем 32, представлены в [[Дополнительный код|дополнительном коде]], результат i3 также выдаётся в [[Дополнительный код|дополнительном коде]]. Если оба аргумента представлены в беззнаковом виде, результат также будет в беззнаковом виде — положительным числом или нулём. | |||
Последовательности слов {{Текст на индикаторе|65535, XOR}} и {{Текст на индикаторе|255 XOR}} позволяют сделать поразрядное логическое отрицание (NOT) 16-битного и 8-битного числа, находящегося на вершине [[Стек данных|стека]]. | |||
Также слово XOR можно использовать для логической операции исключающего "ИЛИ" над флагами, если значение «истина» представляется числом -1. Все стандартные слова [[Каллисто]], возвращающие логическое значение (например, команды сравнения), используют это значение для возвращаемого флага «истина». | |||
Слово XOR реализовано с использованием команды ЭКВМ [[K XOR]]. | |||
== XOR в стандарте ANS Forth == | == XOR в стандарте ANS Forth == | ||
Строка 15: | Строка 22: | ||
x3 поразрядное исключающее-или x1 и x2. | x3 поразрядное исключающее-или x1 и x2. | ||
== XOR в предыдущем стандарте Forth-83 (англ.) == | |||
XOR 16b1 16b2 -- 16b3 79 "x-or" | XOR 16b1 16b2 -- 16b3 79 "x-or" | ||
16b3 is the bit-by-bit exclusive-or of 16b1 with 16b2. | 16b3 is the bit-by-bit exclusive-or of 16b1 with 16b2. | ||
== XOR в стандарте Forth-79 (англ.) == | |||
XOR n1 n2 -- n3 174 "x-or" | XOR n1 n2 -- n3 174 "x-or" | ||
Leave the bitwise exclusive-or of two numbers. | Leave the bitwise exclusive-or of two numbers. | ||
== XOR в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
XOR nl n2 --- xor L1 | XOR nl n2 --- xor L1 | ||
Leave the bitwise logical exclusive or of two values. | Leave the bitwise logical exclusive or of two values. | ||
== Ссылки == | == Ссылки == | ||
* См. слова [[AND]] [[OR]] [[INVERT]] | |||
* См. слова [[AND]] | |||
* [http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8E_2 Сложение по модулю 2], [https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0_%D0%B2%D1%8B%D1%81%D0%BA%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9 Логика высказываний] и [https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 Битовые операции] в Википедии | * [http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8E_2 Сложение по модулю 2], [https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0_%D0%B2%D1%8B%D1%81%D0%BA%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9 Логика высказываний] и [https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 Битовые операции] в Википедии | ||
* [http://www.catb.org/~esr/jargon/html/X/xor.html XOR на The Jargon File] ''(англ.)'' | * [http://www.catb.org/~esr/jargon/html/X/xor.html XOR на The Jargon File] ''(англ.)'' | ||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2490 XOR (x-or)] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2490 XOR (x-or)] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http:// | * Слово [http://www.forth200x.org/documents/html3/core/XOR.html XOR (x-or)] в черновике Forth 200x ''(англ.)'' | ||
{{нет иллюстраций}} | |||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Логические операции Каллисто]] | [[Категория:Логические операции Каллисто]] | ||
[[Категория: | [[Категория:Описание бета-версии Каллисто]] | ||