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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
'''XOR''' (исключающее ИЛИ) — стандартное слово [[Каллисто]].
'''XOR''' (исключающее ИЛИ) — стандартное слово [[Каллисто]]. 32-битное поразрядное логическое исключающее ИЛИ.
XOR            ( i1 i2 -- i3 )


32-битное побитовое логическое исключающее ИЛИ (XOR).
Выполняет поразрядное логическое исключающее "ИЛИ" для 32-битных чисел i1 и i2, результат i3 заносится в [[Стек данных|стек]]. Другими словами, каждый бит числа i1 сравнивается с соответствующим битом числа i2 и, если один из них (но не оба) равен единице, в соответствующий бит числа i3 заносится единица. В противном случае, когда оба рассматриваемых бита совпадают, соответствующий бит результата i3 будет равен нулю.


== Детали реализации ==
В [[Каллисто]] для записи 32-битных целых чисел в [[Стек данных|десятичном стеке]] используется [[дополнительный код]] (''англ.'' two's complement). На входе слово XOR принимает как 32-битные целые в [[Дополнительный код|дополнительном коде]], так и беззнаковые целые. Результат i3 всегда представлен в [[Дополнительный код|дополнительном коде]] и отрицателен, если старший бит в нём установлен.
XOR даёт правильный результат побитового исключающего "ИЛИ" над числами любой разрядности, меньшей 32, включая 24-, 16- и 8-битные числа. Если оба аргумента разрядности меньше, чем 32, представлены в [[Дополнительный код|дополнительном коде]], результат i3 также выдаётся в [[Дополнительный код|дополнительном коде]]. Если оба аргумента представлены в беззнаковом виде, результат также будет в беззнаковом виде — положительным числом или нулём.
Также слово XOR можно использовать для логической операции исключающего "ИЛИ" над флагами, если значение «истина» представляется числом -1. Все стандартные слова [[Каллисто]], возвращающие логическое значение (например, команды сравнения), используют это значение для флага «истина».
Слово XOR реализовано с использованием команды ЭКВМ [[K XOR]].


== XOR в стандарте ANS Forth ==
== XOR в стандарте ANS Forth ==
Строка 8: Строка 17:
             ( x1 x2 -- x3 )
             ( x1 x2 -- x3 )
             x3 поразрядное исключающее-или x1 и x2.
             x3 поразрядное исключающее-или x1 и x2.


== XOR в предыдущем стандарте Forth-83 (англ.) ==
== 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 в стандарте 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 в 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]]
* [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://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://www.forth200x.org/documents/html/core.html#core:XOR Слово XOR (x-or) в черновике Forth 200x] ''(англ.)''
* [http://www.forth200x.org/documents/html/core.html#core:XOR Слово XOR (x-or) в черновике Forth 200x] ''(англ.)''
Строка 34: Строка 42:
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Логические операции Каллисто]]
[[Категория:Логические операции Каллисто]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:Описание бета-версии Каллисто]]

Версия от 18:55, 26 октября 2015

XOR (исключающее ИЛИ) — стандартное слово Каллисто. 32-битное поразрядное логическое исключающее ИЛИ.

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 также выдаётся в дополнительном коде. Если оба аргумента представлены в беззнаковом виде, результат также будет в беззнаковом виде — положительным числом или нулём.

Также слово XOR можно использовать для логической операции исключающего "ИЛИ" над флагами, если значение «истина» представляется числом -1. Все стандартные слова Каллисто, возвращающие логическое значение (например, команды сравнения), используют это значение для флага «истина».

Слово XOR реализовано с использованием команды ЭКВМ K XOR.

XOR в стандарте ANS Forth

6.1.2490   XOR                               "x-or"                        CORE
           ( x1 x2 -- x3 )
           x3 поразрядное исключающее-или x1 и x2.

XOR в предыдущем стандарте Forth-83 (англ.)

     XOR          16b1 16b2 -- 16b3             79              "x-or"
          16b3 is the bit-by-bit exclusive-or of 16b1 with 16b2.

XOR в стандарте Forth-79 (англ.)

XOR            n1 n2 -- n3                   174             "x-or"
    Leave the bitwise exclusive-or of two numbers.

XOR в fig-FORTH Release 1 glossary, май 1979 (англ.)

XOR           nl  n2  ---  xor                 L1
       Leave the bitwise logical exclusive or of two values.

Ссылки


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


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