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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 37: Строка 37:
  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.
== Реализация ==
Слово XOR в ФОРТ-ЕС было [[примитив]]ом. Вот его определение:
<PRE>
                    Экран номер 13
( 31.03.86      AND  OR XOR  NOT  0=  0<      )
CODE XOR    ( W1,M2->W3)
14 LHRW12 BAL,  RW1 RW2 XR, POPPUT1 B,  END-CODE
</PRE>


== Ссылки ==
== Ссылки ==

Версия от 05:42, 26 марта 2016

Пример работы слова XOR

XOR (исключающее или, читается «ксор») — стандартное слово Каллисто. 32-битное поразрядное сложение по модулю два.

XOR            ( n1 n2 -- i )                  Исключающее «или».

Выполняет 32-битное логическое исключающее «или» для целых чисел n1 и n2, результат в дополнительном коде i заносится в стек.

Другими словами, каждый из 32 битов числа n1 сравнивается с соответствующим битом числа n2 и, если один из них (но не оба) равен единице, в соответствующий бит числа i заносится единица. В противном случае, когда оба рассматриваемых бита совпадают, соответствующий бит результата i будет равен нулю.

Ввод слова XOR

В режиме ЛАТ последовательно нажмите три белые клавиши  0   5   × 

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

В Каллисто для записи 32-битных целых чисел в десятичном стеке используется дополнительный код (англ. two's complement). На входе слово XOR принимает как 32-битные целые в дополнительном коде, так и беззнаковые целые. Результат i всегда представлен в дополнительном коде и отрицателен, если старший бит в нём установлен.

XOR даёт правильный результат побитового исключающего «или» над числами любой разрядности, меньшей 32, включая 24-, 16- и 8-битные числа. Если оба аргумента разрядности меньше, чем 32, представлены в дополнительном коде, результат i также выдаётся в дополнительном коде. Если оба аргумента представлены в беззнаковом виде, результат также будет в беззнаковом виде — положительным числом или нулём.

Последовательности слов  65535, XOR  и  255 XOR  позволяют сделать поразрядное логическое отрицание (NOT) 16-битного и 8-битного числа, находящегося на вершине стека.

Также слово 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.

Реализация

Слово XOR в ФОРТ-ЕС было примитивом. Вот его определение:

                     Экран номер 13
( 31.03.86      AND  OR XOR  NOT  0=  0<      )

CODE XOR    ( W1,M2->W3)
 14 LHRW12 BAL,   RW1 RW2 XR, POPPUT1 B,   END-CODE

Ссылки


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