Исключающее или xor: Практика применения XOR в программировании / Хабр

Элементы Исключающее ИЛИ/Исключающее ИЛИ-НЕ/Нечётность/Чётность

Библиотека:Базовые
Введён в:2.0 Beta 1 для Исключающее ИЛИ/Нечётность/Чётность; 2.0 Beta 6 для Исключающее ИЛИ-НЕ
Внешний вид:

Поведение

Элементы Исключающее ИЛИ, Исключающее ИЛИ-НЕ, Нечётность и Чётность вычисляют соответствующую функцию от значений на входах и выдают результат на выход.

По умолчанию, неподключенные входы игнорируются — то есть, если входы действительно не имеют ничего подключенного к ним — даже провода. Таким образом, вы можете добавить 5-входовый элемент, но подключить только два входа, и он будет работать как 2-входовый элемент; это избавляет вас от необходимости беспокоиться о настройке количества входов каждый раз при создании элемента. (Если все входы не подключены, то на выходе значение ошибки X.) Некоторые пользователи, однако, предпочитают, чтобы Logisim настаивал, чтобы все входы были подключены, поскольку это соответствует реальным элементам. Вы можете включить это поведение, выбрав меню Проект > Параметры…, перейдя на вкладку Моделирование, и выбрав вариант Ошибка для неопределённых входов для Выход элемента при неопределённости.

Двухвходовая таблица истинности для элементов следующая.

xyИсключающее ИЛИИсключающее ИЛИ-НЕНечётностьЧётность
000101
011010
101010
110101

Как вы можете видеть, элементы Нечётность и Исключающее ИЛИ ведут себя одинаково в случае двух входов; аналогично, элементы Чётность и Исключающее ИЛИ-НЕ ведут себя одинаково.Исключающее или xor: Практика применения XOR в программировании / Хабр Но если входов с определённым значением больше двух, то элемент Исключающее ИЛИ будет давать на выходе 1, когда единица строго на одном входе, тогда как элемент Нечётность даст на выходе 1, когда единица на нечётном количестве входов. Элемент Исключающее ИЛИ-НЕ будет давать на выходе 1, когда входов с единицей строго не один, тогда как элемент Чётность даст 1, когда входов с единицей чётное количество. Элементы Исключающее ИЛИ и Исключающее ИЛИ-НЕ имеют атрибут, названный Многовходовое поведение, который позволяет настроить их на использование поведения элементов Нечётность и Чётность.

Если на каких-либо входах значение ошибки (например, если противоречивые значения поступают на один и тот же провод) или плавающее значение, то на выходе будет значение ошибки.

Многобитные версии каждого элемента будут выполнять свои однобитные преобразования над входами поразрядно.

Примечание: многие специалисты утверждают, что поведение фигурного элемента Исключающее ИЛИ должно соответствовать поведению элемента Нечётность, но по этому вопросу нет согласия. Поведение Logisim по умолчанию для элемента Исключающее ИЛИ основано на стандарте IEEE 91. Это также согласуется с интуитивным пониманием термина Исключающее ИЛИ: официант, спрашивающий, хотите вы гарнир из картофельного пюре, моркови, зеленого горошка, или шинкованной капусты, примет только один выбор, а не три, независимо от того, что вам могут сказать некоторые специалисты. (Должен признать, однако, что я не подвергал это заявление серьезным испытаниям.) Вы можете настроить элементы Исключающее ИЛИ и Исключающее ИЛИ-НЕ на использование одного из вариантов, меняя его атрибут Многовходовое поведение.

Контакты (предполагается, что компонент направлен на восток)

Западный край (входы, разрядность соответствует атрибуту Биты данных)

Входы компонента. Их будет столько, сколько указано в атрибуте Количество входов.


Заметьте, что если вы используете фигурные элементы, то западный край элементов Исключающее ИЛИ и Исключающее ИЛИ-НЕ будет искривлён.Исключающее или xor: Практика применения XOR в программировании / Хабр Тем не менее, входные контакты расположены вряд. Logisim отрисовывает короткие отрезки чтобы показать это; если вы перекроете отрезок, программа будет без предупреждений предполагать, что вы не хотели перекрыть его. При использовании «Вида для печати», эти отрезки не будут отрисованы, если не подключены к проводам.


Восточный край (выход, разрядность соответствует атрибуту Биты данных)

Выход элемента, значение на котором вычисляется на основании текущих значений на входах, как описано выше.


Атрибуты

Когда компонент выбран, или уже добавлен, клавиши от 0 до 9 меняют его атрибут Количество входов, комбинации от Alt-0 до Alt-9 меняют его атрибут Биты данных, а клавиши со стрелками меняют его атрибут Направление.

Направление

Направление компонента (его выхода относительно его входов).


Биты данных

Разрядность входов и выходов компонента.


Размер элемента

Определяет, следует отрисовывать широкую или узкую версию компонента. Это не влияет на количество входов, которое определяется атрибутом Количество входов; правда, если количество входов превышает 3 (для узкого компонента) или 5 (для широкого), то элемент будет отрисовываться с «крыльями», чтобы вместить запрошенное количество входов.


Количество входов

Определяет, сколько контактов на западном крае будет иметь компонент.


Многовходовое поведение (только для Исключающее ИЛИ и Исключающее ИЛИ-НЕ)

Когда входов три или более, то значение на выходе элементов Исключающее ИЛИ и Исключающее ИЛИ-НЕ будет основано или на том, что 1 строго на одном входе (по умолчанию), или на нечётном количестве входов.


Поведение Инструмента Нажатие

Нет.

Поведение Инструмента Текст

Нет.

Назад к Справке по библиотеке

Булев оператор XOr—Справка | ArcGIS Desktop

Доступно с лицензией Spatial Analyst.Исключающее или xor: Практика применения XOR в программировании / Хабр » (ссылка).

  • См. раздел Параметры среды анализа и Spatial Analyst для получения дополнительной информации о среде геообработки данного инструмента.

  • Синтаксис

    BooleanXOr (in_raster_or_constant1, in_raster_or_constant2)

    Возвращаемое значение

    Пример кода

    Булев оператор XOr. Пример 1 (окно Python)

    В этом примере выполняется Булева операция XOr (Исключающее Или) на двух растрах GRID, и выводится растр TIFF.

    import arcpy
    from arcpy import env
    from arcpy.sa import *
    env.workspace = "C:/sapyexamples/data"
    outBooleanXOr = BooleanXOr("degs", "negs")
    outBooleanXOr.save("C:/sapyexamples/output/outboolxor.tif")
    
    Булев оператор XOr. Пример 2 (автономный скрипт)

    В этом примере выполняется Булева операция XOr (Исключающее или) на двух растрах GRID.

    # Name: BooleanXOr_Ex_02.py
    # Description: Performs a Boolean Exclusive Or operation on the
    #              cell values of two input rasters
    # Requirements: Spatial Analyst Extension
    
    # Import system modules
    import arcpy
    from arcpy import env
    from arcpy.sa import *
    
    # Set environment settings
    env.workspace = "C:/sapyexamples/data"
    
    # Set local variables
    inRaster1 = "degs"
    inRaster2 = "negs"
    
    # Check out the ArcGIS Spatial Analyst extension license
    arcpy.CheckOutExtension("Spatial")
    
    # Execute BooleanXOr
    outBooleanXOr = BooleanXOr(inRaster1, inRaster2)
    
    # Save the output 
    outBooleanXOr.save("C:/sapyexamples/output/outboolxor")
    

    Параметры среды

    Информация о лицензиях

    • ArcGIS Desktop Basic: Требует Spatial Analyst
    • ArcGIS Desktop Standard: Требует Spatial Analyst
    • ArcGIS Desktop Advanced: Требует Spatial Analyst

    Связанные разделы

    Побитовые операторы в C++: И, ИЛИ, НЕ и исключающее ИЛИ | Уроки С++

      Обновл. 11 Сен 2020  | 

    Побитовые операторы манипулируют отдельными битами в пределах переменной.

    Примечание: Для некоторых этот материал может показаться сложным.Исключающее или xor: Практика применения XOR в программировании / Хабр Если вы застряли или что-то не понятно — пропустите этот урок (и следующий), в будущем сможете вернуться и разобраться детально. Он не столь важен для прогресса в изучении языка C++, как другие уроки, и изложен здесь в большей мере для общего развития.

    Зачем нужны побитовые операторы?

    В далеком прошлом компьютерной памяти было очень мало и ею сильно дорожили. Это было стимулом максимально разумно использовать каждый доступный бит. Например, в логическом типе данных bool есть всего лишь два возможных значения (true и false), которые могут быть представлены одним битом, но по факту занимают целый байт памяти! А это, в свою очередь, из-за того, что переменные используют уникальные адреса памяти, а они выделяются только в байтах. Переменная bool занимает 1 бит, а другие 7 бит — тратятся впустую.

    Используя побитовые операторы, можно создавать функции, которые позволят уместить 8 значений типа bool в переменную размером 1 байт, что значительно сэкономит потребление памяти. В прошлом такой трюк был очень популярен. Но сегодня, по крайней мере, в прикладном программировании, это не так.

    Теперь памяти стало существенно больше и программисты обнаружили, что лучше писать код так, чтобы было проще и понятнее его поддерживать, нежели усложнять его ради незначительной экономии памяти. Поэтому спрос на использование побитовых операторов несколько уменьшился, за исключением случаев, когда необходима уж максимальная оптимизация (например, научные программы, которые используют огромное количество данных; игры, где манипуляции с битами могут быть использованы для дополнительной скорости; встроенные программы, где память по-прежнему ограничена).

    В языке С++ есть 6 побитовых операторов:

    ОператорСимволПримерОперация
    Побитовый сдвиг влево<<x << yВсе биты в x смещаются влево на y бит
    Побитовый сдвиг вправо>>x >> yВсе биты в x смещаются вправо на y бит
    Побитовое НЕ~~xВсе биты в x меняются на противоположные
    Побитовое И&x & yКаждый бит в x И каждый соответствующий ему бит в y
    Побитовое ИЛИ|x | yКаждый бит в x ИЛИ каждый соответствующий ему бит в y
    Побитовое исключающее ИЛИ (XOR)^x ^ yКаждый бит в x XOR с каждым соответствующим ему битом в y

    В побитовых операциях следует использовать только целочисленные типы данных unsigned, так как C++ не всегда гарантирует корректную работу побитовых операторов с целочисленными типами signed.Исключающее или xor: Практика применения XOR в программировании / Хабр

    Правило: При работе с побитовыми операторами используйте целочисленные типы данных unsigned.

    Побитовый сдвиг влево (<<) и побитовый сдвиг вправо (>>)

    В языке C++ количество используемых бит основывается на размере типа данных (в 1 байте находятся 8 бит). Оператор побитового сдвига влево (<<) сдвигает биты влево. Левый операнд является выражением, в котором они сдвигаются, а правый — количество мест, на которые нужно сдвинуть. Поэтому в выражении 3 << 1 мы имеем в виду «сдвинуть биты влево в литерале 3 на одно место».

    Примечание: В следующих примерах мы будем работать с 4-битными двоичными значениями.

    Рассмотрим число 3, которое в двоичной системе равно 0011:

    3 = 0011
    3 << 1 = 0110 = 6
    3 << 2 = 1100 = 12
    3 << 3 = 1000 = 8

    В последнем третьем случае один бит перемещается за пределы самого литерала! Биты, сдвинутые за пределы двоичного числа, теряются навсегда.

    Оператор побитового сдвига вправо (>>) сдвигает биты вправо. Например:

    12 = 1100
    12 >> 1 = 0110 = 6
    12 >> 2 = 0011 = 3
    12 >> 3 = 0001 = 1

    В третьем случае мы снова переместили бит за пределы литерала. Он также потерялся навсегда.

    Хотя в примерах, приведенных выше, мы смещаем биты только в литералах, мы также можем смещать биты и в переменных:

    unsigned int x = 4;
    x = x << 1; // x должен стать равным 8



    unsigned int x = 4;

    x = x << 1; // x должен стать равным 8

    Следует помнить, что результаты операций с побитовыми сдвигами в разных компиляторах могут отличаться.

    Что!? Разве операторы << и >> используются не для вывода и ввода данных?

    И для этого тоже.

    Сейчас польза от использования побитовых операторов не так велика, как это было раньше.Исключающее или xor: Практика применения XOR в программировании / Хабр Сейчас в большинстве случаев оператор побитового сдвига влево используется для вывода данных. Например, рассмотрим следующую программу:

    #include <iostream>

    int main()
    {
    unsigned int x = 4;
    x = x << 1; // оператор << используется для побитового сдвига влево
    std::cout << x; // оператор << используется для вывода данных в консоль

    return 0;
    }



    #include <iostream>

    int main()

    {

        unsigned int x = 4;

        x = x << 1; // оператор << используется для побитового сдвига влево

        std::cout << x; // оператор << используется для вывода данных в консоль

        return 0;

    }

    Результат выполнения программы:

    8

    А как компилятор понимает, когда нужно применить оператор побитового сдвига влево, а когда выводить данные? Всё очень просто. std::cout переопределяет значение оператора << по умолчанию на новое (вывод данных в консоль). Когда компилятор видит, что левым операндом оператора << является std::cout, то он понимает, что должен произойти вывод данных. Если левым операндом является переменная целочисленного типа данных, то компилятор понимает, что должен произойти побитовый сдвиг влево (операция по умолчанию).

    Побитовый оператор НЕ

    Побитовый оператор НЕ (~), пожалуй, самый простой для объяснения и понимания. Он просто меняет каждый бит на противоположный, например, с 0 на 1 или с 1 на 0. Обратите внимание, результаты побитового НЕ зависят от размера типа данных!

    Предположим, что размер типа данных составляет 4 бита:

    4 = 0100
    ~ 4 = 1011 (двоичное) = 11 (десятичное)

    Предположим, что размер типа данных составляет 8 бит:

    4 = 0000 0100
    ~ 4 = 1111 1011 (двоичное) = 251 (десятичное)

    Побитовые операторы И, ИЛИ и исключающее ИЛИ (XOR)

    Побитовые операторы И (&) и ИЛИ (|) работают аналогично логическим операторам И и ИЛИ.Исключающее или xor: Практика применения XOR в программировании / Хабр 12:

    0 1 0 1
    1 1 0 0
    --------
    1 0 0 1 // 9 (десятичное)

    Оценить статью:

    Загрузка…

    Поделиться в социальных сетях:

    Исключающее или используется в режиме. Пример решения задачи XOR — исключающего ИЛИ

    Абсолютно все цифровые микросхемы состоят из одних и тех же логических элементов – «кирпичиков» любого цифрового узла. Вот о них мы и поговорим сейчас.

    Логический элемент
    – это такая схемка, у которой несколько входов и один выход. Каждому состоянию сигналов на входах, соответствует определенный сигнал на выходе.

    Итак, какие бывают элементы?

    Элемент «И» (AND)

    Иначе его называют «конъюнктор».

    Для того, чтобы понять как он работает, нужно нарисовать таблицу, в которой будут перечислены состояния на выходе при любой комбинации входных сигналов. Такая таблица называется «таблица истинности
    ». Таблицы истинности широко применяются в цифровой технике для описания работы логических схем.

    Вот так выглядит элемент «И» и его таблица истинности:

    Поскольку вам придется общаться как с русской, так и с буржуйской тех. документацией, я буду приводить условные графические обозначения (УГО) элементов и по нашим и по не нашим стандартам.

    Смотрим таблицу истинности, и проясняем в мозгу принцип. Понять его не сложно: единица на выходе элемента «И» возникает только тогда, когда на оба входа поданы единицы. Это объясняет название элемента: единицы должны быть И на одном, И на другом входе.

    Если посмотреть чуток иначе, то можно сказать так: на выходе элемента «И» будет ноль в том случае, если хотя бы на один из его входов подан ноль. Запоминаем. Идем дальше.

    Элемент «ИЛИ» (OR)

    По другому, его зовут «дизъюнктор».

    Любуемся:

    Опять же, название говорит само за себя.

    На выходе возникает единица, когда на один ИЛИ на другой ИЛИ на оба сразу входа подана единица.Исключающее или xor: Практика применения XOR в программировании / Хабр Этот элемент можно назвать также элементом «И» для негативной логики: ноль на его выходе бывает только в том случае, если и на один и на второй вход поданы нули.

    Элемент «НЕ» (NOT)

    Чаще, его называют «инвертор».

    Надо чего-нибудь говорить по поводу его работы?

    Элемент «И-НЕ» (NAND)

    Элемент И-НЕ работает точно так же как «И», только выходной сигнал полностью противоположен. Там где у элемента «И» на выходе должен быть «0», у элемента «И-НЕ» — единица. И наоборот. Э то легко понять по эквивалентной схеме элемента:

    Элемент «ИЛИ-НЕ» (NOR)

    Та же история – элемент «ИЛИ» с инвертором на выходе.

    Следующий товарищ устроен несколько хитрее:
    Элемент «Исключающее ИЛИ» (XOR)

    Он вот такой:

    Операция, которую он выполняет, часто называют «сложение по модулю 2». На самом деле, на этих элементах строятся цифровые сумматоры.

    Смотрим таблицу истинности. Когда на выходе единицы? Правильно: когда на входах разные сигналы. На одном – 1, на другом – 0. Вот такой он хитрый.

    Эквивалентная схема примерно такая:

    Ее запоминать не обязательно.

    Собственно, это и есть основные логические элементы. На их основе строятся абсолютно любые цифровые микросхемы. Даже ваш любимый Пентиум 4.

    Ну и напоследок – несколько микросхем, внутри которых содержатся цифровые элементы. Около выводов элементов обозначены номера соответствующих ног микросхемы. Все микросхемы, перечисленные здесь, имеют 14 ног. Питание подается на ножки 7 (-) и 14 (+). Напряжение питания – смотри в таблице в предыдущем параграфе.

    В Булевой алгебре, на которой базируется вся цифровая техника, электронные элементы должны выполнять ряд определённых действий. Это так называемый логический базис. Вот три основных действия:

      ИЛИ — логическое сложение (дизъюнкция
      ) — OR
      ;

      И — логическое умножение (конъюнкция
      ) — AND
      ;

      НЕ — логическое отрицание (инверсия
      ) — NOT
      .Исключающее или xor: Практика применения XOR в программировании / Хабр

    Примем за основу позитивную логику, где высокий уровень будет «1», а низкий уровень примем за «0». Чтобы можно было более наглядно рассмотреть выполнение логических операций, существуют таблицы истинности для каждой логической функции. Сразу нетрудно понять, что выполнение логических функций «и» и «или» подразумевают количество входных сигналов не менее двух, но их может быть и больше.

    Логический элемент И.

    На рисунке представлена таблица истинности элемента «И
    » с двумя входами. Хорошо видно, что логическая единица появляется на выходе элемента только при наличии единицы на первом входе и
    на втором. В трёх остальных случаях на выходе будут нули.

    Вход X1Вход X2Выход Y
    0
    0
    0
    1
    0
    0
    0
    1
    0
    1
    1
    1

    На принципиальных схемах логический элемент «И» обозначают так.

    На зарубежных схемах обозначение элемента «И» имеет другое начертание. Его кратко называют AND
    .

    Логический элемент ИЛИ.

    Элемент «ИЛИ
    » с двумя входами работает несколько по-другому. Достаточно логической единицы на первом входе или
    на втором как на выходе будет логическая единица. Две единицы так же дадут единицу на выходе.Исключающее или xor: Практика применения XOR в программировании / Хабр

    Вход X1Вход X2Выход Y
    0
    0
    0
    1
    0
    1
    0
    1
    1
    1
    1
    1

    На схемах элемент «ИЛИ» изображают так.

    На зарубежных схемах его изображают чуть по-другому и называют элементом OR
    .

    Логический элемент НЕ.

    Элемент, выполняющий функцию инверсии «НЕ
    » имеет один вход и один выход. Он меняет уровень сигнала на противоположный. Низкий потенциал на входе даёт высокий потенциал на выходе и наоборот.

    Вход XВыход Y
    0
    1
    1
    0

    Вот таким образом его показывают на схемах.

    В зарубежной документации элемент «НЕ» изображают следующим образом. Сокращённо называют его NOT
    .

    Все эти элементы в интегральных микросхемах могут объединяться в различных сочетаниях. Это элементы: И-НЕ, ИЛИ-НЕ, и более сложные конфигурации.Исключающее или xor: Практика применения XOR в программировании / Хабр Пришло время поговорить и о них.

    Логический элемент 2И-НЕ.

    Рассмотрим несколько реальных логических элементов на примере серии транзисторно-транзисторной логики (ТТЛ) К155 с малой степенью интеграции. На рисунке когда-то очень популярная микросхема К155ЛА3, которая содержит четыре независимых элемента 2И — НЕ
    . Кстати, с помощью её можно собрать простейший маячок на микросхеме .

    Цифра всегда обозначает число входов логического элемента. В данном случае это двухвходовой элемент «И» выходной сигнал которого инвертируется. Инвертируется, это значит «0» превращается в «1», а «1» превращается в «0». Обратим внимание на кружочек на выходах — это символ инверсии
    . В той же серии существуют элементы 3И-НЕ, 4И-НЕ, что означает элементы «И» с различным числом входов (3, 4 и т.д.).

    Как вы уже поняли, один элемент 2И-НЕ изображается вот так.

    По сути это упрощённое изображение двух объёдинённых элементов: элемента 2И и элемента НЕ на выходе.

    Зарубежное обозначение элемента И-НЕ (в данном случае 2И-НЕ). Называется NAND
    .

    Таблица истинности для элемента 2И-НЕ.

    Вход X1Вход X2Выход Y
    0
    0
    1
    1
    0
    1
    0
    1
    1
    1
    1
    0

    В таблице истинности элемента 2И — НЕ мы видим, что благодаря инвертору получается картина противоположная элементу «И».Исключающее или xor: Практика применения XOR в программировании / Хабр В отличие от трёх нулей и одной единицы мы имеем три единицы и ноль. Элемент «И — НЕ» часто называют элементом Шеффера.

    Логический элемент 2ИЛИ-НЕ.

    Логический элемент 2ИЛИ — НЕ
    представлен в серии К155 микросхемой 155ЛЕ1. Она содержит в одном корпусе четыре независимых элемента. Таблица истинности так же отличается от схемы «ИЛИ» применением инвертирования выходного сигнала.

    Таблица истинности для логического элемента 2ИЛИ-НЕ.

    Вход X1Вход X2Выход Y
    0
    0
    1
    1
    0
    0
    0
    1
    0
    1
    1
    0

    Изображение на схеме.

    На зарубежный лад изображается так. Называют как NOR
    .

    Мы имеем только один высокий потенциал на выходе, обусловленный подачей на оба входа одновременно низкого потенциала. Здесь, как и на любых других принципиальных схемах, кружочек на выходе подразумевает инвертирование сигнала. Так как схемы И — НЕ и ИЛИ — НЕ встречаются очень часто, то для каждой функции имеется своё условное обозначение. Функция И — НЕ обозначается значком «&
    «, а функция ИЛИ — НЕ значком «1
    «.

    Для отдельного инвертора таблица истинности уже приведена выше. Можно добавить, что количество инверторов в одном корпусе может достигать шести.Исключающее или xor: Практика применения XOR в программировании / Хабр

    Логический элемент «исключающее ИЛИ».

    К числу базовых логических элементов принято относить элемент реализующий функцию «исключающее ИЛИ». Иначе эта функция называется «неравнозначность».

    Высокий потенциал на выходе возникает только в том случае, если входные сигналы не равны. То есть на одном из входов должна быть единица, а на другом ноль. Если на выходе логического элемента имеется инвертор, то функция выполняется противоположная — «равнозначность». Высокий потенциал на выходе будет появляться при одинаковых сигналах на обоих входах.

    Таблица истинности.

    Вход X1Вход X2Выход Y
    0
    0
    0
    1
    0
    1
    0
    1
    1
    1
    1
    0

    Эти логические элементы находят своё применение в сумматорах. «Исключающее ИЛИ» изображается на схемах знаком равенства перед единицей «=1
    «.

    На зарубежный манер «исключающее ИЛИ» называют XOR
    и на схемах рисуют вот так.

    Кроме вышеперечисленных логических элементов, которые выполняют базовые логические функции очень часто, используются элементы, объединённые в различных сочетаниях. Вот, например, К555ЛР4. Она называется очень серьёзно 2-4И-2ИЛИ-НЕ.

    Её таблица истинности не приводится, так как микросхема не является базовым логическим элементом.Исключающее или xor: Практика применения XOR в программировании / Хабр Такие микросхемы выполняют специальные функции и бывают намного сложнее, чем приведённый пример. Так же в логический базис входят и простые элементы «И» и «ИЛИ». Но они используются гораздо реже. Может возникнуть вопрос, почему эта логика называется транзисторно-транзисторной.

    Если посмотреть в справочной литературе схему, допустим, элемента 2И — НЕ из микросхемы К155ЛА3, то там можно увидеть несколько транзисторов и резисторов. На самом деле ни резисторов, ни диодов в этих микросхемах нет. На кристалл кремния через трафарет напыляются только транзисторы, а функции резисторов и диодов выполняют эмиттерные переходы транзисторов. Кроме того в ТТЛ логике широко используются многоэмиттерные транзисторы. Например, на входе элемента 4И стоит четырёхэмиттерный

    Бит — это минимальная единица измерения объёма информации, так как она хранит одно из двух значений — 0 (False) или 1 (True). False и True в переводе на русский ложь и истина соответственно. То есть одна битовая ячейка может находиться одновременно лишь в одном состоянии из возможных двух. Напомню, два возможных состояния битовой ячейки равны — 1 и 0.
    Есть определённые операции, для манипуляций с битами. Эти операции называются логическими или булевыми операциями, названные в честь одного из математиков — Джорджа Буля (1815-1864), который способствовал развитию этой области науки.
    Все эти операции могут быть применены к любому биту, независимо от того, какое он имеет значение — 0(нуль) или 1(единицу). Ниже приведены основные логические операции и примеры их использования.

    Логическая операция И (AND)

    Обозначение AND: &

    Логическая операция И выполняется с двумя битами, назовем их a и b. Результат выполнения логической операции И будет равен 1, если a и b равны 1, а во всех остальных (других) случаях, результат будет равен 0. Смотрим таблицу истинности логической операции and.

    a(бит 1)

    b(бит 2)

    a(бит 1) & b(бит 2)

    0

    0

    0

    0

    1

    0

    1

    0

    0

    1

    1

    1

    Логическая операция ИЛИ (OR)

    Обозначение OR: |

    Логическая операция ИЛИ выполняется с двумя битами (a и b).Исключающее или xor: Практика применения XOR в программировании / Хабр y) .

  • Максимальное количество переменных равно 10 .
  • Проектирование и анализ логических схем ЭВМ ведётся с помощью специального раздела математики — алгебры логики. В алгебре логики можно выделить три основные логические функции: «НЕ» (отрицание), «И» (конъюнкция), «ИЛИ» (дизъюнкция).

    Для создания любого логического устройства необходимо определить зависимость каждой из выходных переменных от действующих входных переменных такая зависимость называется переключательной функцией или функцией алгебры логики.

    Функция алгебры логики называется полностью определённой если заданы все 2 n её значения, где n – число выходных переменных.

    Если определены не все значения, функция называется частично определённой.

    Устройство называется логическим, если его состояние описывается с помощью функции алгебры логики.

    Для представления функции алгебры логики используется следующие способы:

    • словесное описание – это форма, которая используется на начальном этапе проектирования имеет условное представление.
    • описание функции алгебры логики в виде таблицы истинности.
    • описание функции алгебры логики в виде алгебраического выражения: используется две алгебраические формы ФАЛ:

      а) ДНФ – дизъюнктивная нормальная форма
      – это логическая сумма элементарных логических произведений. ДНФ получается из таблицы истинности по следующему алгоритму или правилу:

      1) в таблице выбираются те строки переменных для которых функция на выходе =1 .

      2) для каждой строки переменных записывается логическое произведение; причём переменные =0 записываются с инверсией.

      3) полученное произведение логически суммируется.

      Fднф= X
      1 *Х 2 *Х 3 ∨ Х 1 x
      2 Х 3 ∨ Х 1 Х 2 x
      3 ∨ Х 1 Х 2 Х 3

      ДНФ называется совершенной, если все переменные имеют одинаковый ранг или порядок, т.е. в каждое произведение обязательно должны включаться все переменные в прямом или инверсном виде.

      б) КНФ – конъюнктивная нормальна форма
      – это логическое произведение элементарных логических сумм.Исключающее или xor: Практика применения XOR в программировании / Хабр

      КНФ может быть получена из таблицы истинности по следующему алгоритму:

      1) выбираем наборы переменных для которых функция на выходе =0

      2) для каждого набора переменных записываем элементарную логическую сумму, причём переменные =1 записываются с инверсией.

      3) логически перемножаются полученные суммы.

      Fскнф=(X 1 V X 2 V X 3) ∧ (X 1 V X 2 V X
      3) ∧ (X 1 V X
      2 V X 3) ∧ (X
      1 V X 2 V X 3)

      КНФ называется совершенной
      , если все переменные имеют одинаковый ранг.

    По алгебраической форме можно построить схему логического устройства , используя логические элементы.

    Рисунок1- Схема логического устройства

    Все операции алгебры логики определяются таблицами истинности
    значений. Таблица истинности определяет результат выполнения операции для всех возможны
    х логических значений исходных высказываний. Количество вариантов, отражающих результат применения операций, будет зависеть от количества высказываний в логическом выражении. Если число высказываний в логическом выражении N, то таблица истинности будет содержать 2 N строк, так как существует 2 N различных комбинаций возможных значений аргументов.

    Операция НЕ — логическое отрицание (инверсия)

    Логическая операция НЕ применяется к одному аргументу, в качестве которого может быть и простое, и сложное логическое выражение. Результатом операции НЕ является следующее:

    • если исходное выражение истинно, то результат его отрицания будет ложным;
    • если исходное выражение ложно, то результат его отрицания будет истинным.

    Для операции отрицания НЕ приняты следующие условные обозначения:

    не А, Ā, not A, ¬А, !A

    Результат операции отрицания НЕ определяется следующей таблицей истинности:

    Результат операции отрицания истинен, когда исходное высказывание ложно, и наоборот.

    Операция ИЛИ — логическое сложение (дизъюнкция, объединение)

    Логическая операция ИЛИ выполняет функцию объединения двух высказываний, в качестве которых может быть и простое, и сложное логическое выражение.Исключающее или xor: Практика применения XOR в программировании / Хабр Высказывания, являющиеся исходными для логической операции, называют аргументами. Результатом операции ИЛИ является выражение, которое будет истинным тогда и только тогда, когда истинно будет хотя бы одно из исходных выражений.

    Применяемые обозначения: А или В, А V В, A or B, A||B.

    Результат операции ИЛИ определяется следующей таблицей истинности:

    Результат операции ИЛИ истинен, когда истинно А, либо истинно В, либо истинно и А и В одновременно, и ложен тогда, когда аргументы А и В — ложны.

    Операция И — логическое умножение (конъюнкция)

    Логическая операция И выполняет функцию пересечения двух высказываний (аргументов), в качестве которых может быть и простое, и сложное логическое выражение. Результатом операции И является выражение, которое будет истинным тогда и только тогда, когда истинны оба исходных выражения.

    Применяемые обозначения: А и В, А Λ В, A & B, A and B.

    Результат операции И определяется следующей таблицей истинности:

    ABА и B
    000
    010
    100
    111

    Результат операции И истинен тогда и только тогда, когда истинны одновременно высказывания А и В, и ложен во всех остальных случаях.

    Операция «ЕСЛИ-ТО» — логическое следование (импликация)

    Эта операция связывает два простых логических выражения, из которых первое является условием, а второе — следствием из этого условия.

    Применяемые обозначения:

    если А, то В; А влечет В; if A then В; А→ В.

    Таблица истинности:

    ABА → B
    001
    011
    100
    111

    Результат операции следования (импликации) ложен только тогда, когда предпосылка А истинна, а заключение В (следствие) ложно.Исключающее или xor: Практика применения XOR в программировании / Хабр

    Операция «А тогда и только тогда, когда В» (эквивалентность, равнозначность)

    Применяемое обозначение: А ↔ В, А ~ В.

    Таблица истинности:

    ABА↔B
    001
    010
    100
    111

    Операция «Сложение по модулю 2» (XOR, исключающее или, строгая дизъюнкция)

    Применяемое обозначение: А XOR В, А ⊕ В.

    Таблица истинности:

    ABА⊕B
    000
    011
    101
    110

    Результат операции эквивалентность истинен только тогда, когда А и В одновременно истинны или одновременно ложны.

    Приоритет логических операций

    • Действия в скобках
    • Инверсия
    • Конъюнкция (&)
    • Дизъюнкция (V), Исключающее ИЛИ (XOR), сумма по модулю 2
    • Импликация (→)
    • Эквивалентность (↔)

    Совершенная дизъюнктивная нормальная форма

    Совершенная дизъюнктивная нормальная форма формулы
    (СДНФ) это равносильная ей формула, представляющая собой дизъюнкцию элементарных конъюнкций, обладающая свойствами:

    1. Каждое логическое слагаемое формулы содержит все переменные, входящие в функцию F(x 1 ,x 2 ,…x n).
    2. Все логические слагаемые формулы различны.
    3. Ни одно логическое слагаемое не содержит переменную и её отрицание.Исключающее или xor: Практика применения XOR в программировании / Хабр
    4. Ни одно логическое слагаемое формулы не содержит одну и ту же переменную дважды.

    СДНФ можно получить или с помощью таблиц истинности или с помощью равносильных преобразований.

    Для каждой функции СДНФ и СКНФ определены единственным образом с точностью до перестановки.

    Совершенная конъюнктивная нормальная форма

    Совершенная конъюнктивная нормальная форма формулы (СКНФ)
    это равносильная ей формула, представляющая собой конъюнкцию элементарных дизъюнкций, удовлетворяющая свойствам:

    1. Все элементарные дизъюнкции содержат все переменные, входящие в функцию F(x 1 ,x 2 ,…x n).
    2. Все элементарные дизъюнкции различны.
    3. Каждая элементарная дизъюнкция содержит переменную один раз.
    4. Ни одна элементарная дизъюнкция не содержит переменную и её отрицание.

    Часто, для того чтобы продемонстрировать ограниченные возможности однослойных персептронов при решении задач прибегают к рассмотрению так называемой проблемы XOR – исключающего ИЛИ
    .

    Суть задачи заключаются в следующем. Дана логическая функция XOR – исключающее ИЛИ. Это функция от двух аргументов, каждый из которых может быть нулем или единицей. Она принимает значение , когда один из аргументов равен единице, но не оба, иначе . Проблему можно проиллюстрировать с помощью однослойной однонейронной системы с двумя входами, показанной на рисунке ниже.

    Обозначим один вход через , а другой через , тогда все их возможные комбинации будут состоять из четырех точек на плоскости. Таблица ниже показывает требуемую связь между входами и выходом, где входные комбинации, которые должны давать нулевой выход, помечены и , единичный выход – и .

    ТочкиЗначениеЗначениеТребуемый выход
    000
    101
    011
    110

    Один нейрон с двумя входами может сформировать решающую поверхность в виде произвольной прямой.Исключающее или xor: Практика применения XOR в программировании / Хабр Для того, чтобы сеть реализовала функцию XOR, заданную таблицей выше, нужно расположить прямую так, чтобы точки были с одной стороны прямой, а точки – с другой. Попытавшись нарисовать такую прямую на рисунке ниже, убеждаемся, что это невозможно. Это означает, что какие бы значения ни приписывались весам и порогу, однослойная нейронная сеть неспособна воспроизвести соотношение между входом и выходом, требуемое для представления функции XOR.

    Однако функция XOR легко формируется уже двухслойной сетью, причем многими способами. Рассмотрим один из таких способов. Модернизуем сеть на рисунке, добавив еще один скрытый слой нейронов:

    Отметим, что данная сеть дана как есть, т.е. можно считать, что она уже обучена. Цифры над стрелками показывают значения синаптических весов. В качестве функции активации применим функцию единичного скачка с порогом , имеющую следующий график:

    Тогда результат работы такой нейронной сети можно представить в виде следующей таблицы:

    ТочкиЗначениеЗначениеТребуемый выход
    000000
    101101
    011011
    110000

    Каждый из двух нейрон первого слоя формирует решающую поверхность в виде произвольной прямой (делит плоскость на две полуплоскости), а нейрон выходного слоя объединяет эти два решения, образуя решающую поверхность в виде полосы, образованной параллельными прямыми нейронов первого слоя:

    Нейронная сеть, используемая в этой статье для решения задачи XOR, примитивна и не использует всех возможностей многослойных сетей. Очевидно, что многослойные нейронные сети обладают большей представляющей мощностью, чем однослойные, только в случае присутствия нелинейности. А в данной сети применена пороговая линейная функция активации. Такую сеть нельзя будет обучить, например, применив алгоритм обратного распространения ошибки.

    SN74AHCT1G86DBVR, Логический элемент исключающее ИЛИ, семейство ACHT, 2 входа, 1 элемент, 9нс, 4.5В до 5.5В, SOT-23-5



































































































    Минимальная Рабочая Температура-40 C
    Максимальная Рабочая Температура85 C
    Максимальное Напряжение Питания5.5В
    Минимальное Напряжение Питания4.5В
    Количество Выводов5вывод(-ов)
    Количество Входов2
    Стиль Корпуса Микросхемы Логикиsot-23
    Семейство Логической Микросхемы74AHCT
    Линейка Продукции74AHCT1G86
    No. of Elementssingle
    Logic FunctionXOR (Exclusive OR)
    Schmitt Trigger InputWithout Schmitt Trigger Input
    Maximum Operating Temperature+85 °C
    Number of Inputs per Gate2
    Schmitt Trigger InputNo
    Maximum Propagation Delay Time @ Maximum CL9 ns @ 5 V
    Package TypeSOT-23
    Mounting TypeПоверхностный монтаж
    Width1.75мм
    Height1.3мм
    Output TypeCMOS
    Dimensions3.05 x 1.75 x 1.3mm
    Maximum Low Level Output Current8mA
    Maximum High Level Output Current-8mA
    Number Of Elements1
    Length3.05mm
    Minimum Operating Supply Voltage4,5 В
    BrandTexas Instruments
    Propagation Delay Test Condition50pF
    Input TypeCMOS
    Minimum Operating Temperature-40 °C
    Logic FamilyAHCT
    Logic FunctionXOR
    Maximum Operating Supply Voltage5.5 V
    Pin Count5
    EU RoHSCompliant
    ECCN (US)EAR99
    Part StatusActive
    HTS8542.39.00.01
    Logic FamilyAHCT
    Logic FunctionXOR
    Number of Elements per Chip1
    Number of Element Inputs2-IN
    Number of Output Enables per Element0
    Number of Selection Inputs per Element0
    Number of Element Outputs1
    Maximum Propagation Delay Time @ Maximum CL (ns)[email protected]
    Absolute Propagation Delay Time (ns)9
    Process TechnologyCMOS
    Output TypePush-Pull
    Maximum Low Level Output Current (mA)8
    Maximum High Level Output Current (mA)-8
    Minimum Operating Supply Voltage (V)4.5
    Typical Operating Supply Voltage (V)5
    Maximum Operating Supply Voltage (V)5.5
    Maximum Quiescent Current (uA)1
    Propagation Delay Test Condition (pF)50
    Minimum Operating Temperature (°C)-40
    Maximum Operating Temperature (°C)125
    PackagingTape and Reel
    Standard Package NameSOT-23
    Pin Count5
    Supplier PackageSOT-23
    MountingSurface Mount
    Package Height1.1
    Package Length3.05(Max)
    Package Width1.75(Max)
    PCB changed5
    Lead ShapeGull-wing
    Вид монтажаSMD/SMT
    Время задержки распространения7.9 ns
    Высота1.15 mm
    Выходной ток высокого уровня8 mA
    Выходной ток низкого уровня8 mA
    Диапазон рабочих температур40 C to + 125 C
    Длина2.9 mm
    Категория продуктаЛогические элементы
    Количество вентилей1 Gate
    Количество входных линий2 Input
    Количество выходных линий1 Output
    Логическая функцияXOR
    Максимальная рабочая температура+ 125 C
    Минимальная рабочая температура40 C
    Напряжение питания — макс.5.5 V
    Напряжение питания — мин.4.5 V
    ПодкатегорияLogic ICs
    ПродуктSingle-Function Gate
    Рабочее напряжение питания5 V
    Размер фабричной упаковки3000
    Семейство логических элементов74AHCT
    СерияSN74AHCT1G86
    Тип логикиTrue
    Тип продуктаLogic Gates
    Торговая маркаTexas Instruments
    Упаковка / блокSOT-23-5
    ФункцияSingle 2 Input
    Ширина1.6 mm
    Вес, г0.454

    Исключающее или, используя математические операторы

    TL;DR

    XOR любое числовое значение

    a + b - ab(1 + a + b - ab)

    XOR двоичный вход

    a + b - 2ab or (a-b)²


    Вывод

    Основные Логические Операторы

    NOT = (1-x)

    AND = x*y

    От тех операторов мы можем получить…

    OR = (1-(1-a)(1-b)) = a + b - ab

    Примечание: Если a и b являются взаимоисключающими, то их условие and всегда будет равно нулю — с точки зрения диаграммы Венна это означает, что перекрытия нет. В этом случае мы могли бы написать OR = a + b, так как a*b = 0 для всех значений a & b.


    2-фактор XOR

    Определение XOR как (a OR B) AND (NOT (a AND b)) :

    (a OR B) —> (a + b - ab)

    (NOT (a AND b)) —> (1 - ab)

    AND these conditions together to get…

    (a + b - ab)(1 - ab) = a + b - ab(1 + a + b - ab)

    Вычислительные Альтернативы

    Если входные значения являются двоичными, то терминами степеней можно пренебречь, чтобы получить упрощенные вычислительно эквивалентные формы.

    a + b - ab(1 + a + b - ab) = a + b - ab - a²b - ab² + a²b²

    Если x двоично (либо 1, либо 0), то мы можем пренебречь степенями, так как 1² = 1 и 0² = 0

    a + b - ab - a²b - ab² + a²b² — remove powers —> a + b - 2ab

    XOR (binary) = a + b - 2ab

    Двоичный код также позволяет другим уравнениям быть вычислительно эквивалентными приведенному выше. Например…

    Учитывая (a-b)² = a² + b² - 2ab

    Если вход двоичный, мы можем игнорировать полномочия, так что…

    a² + b² - 2ab — remove powers —> a + b - 2ab

    Позволяет нам писать…

    XOR (binary) = (a-b)²


    Многофакторный XOR

    XOR = (1 - A*B*C...)(1 - (1-A)(1-B)(1-C)...)

    А как насчет того, когда вы хотите XOR(A,B, C…)? Проблема здесь в том, что если мы попытаемся различить все условия истинности, как мы это сделали в составной логике для 2-фактора XOR, это не очень хорошо масштабируется, так как вы должны добавить каждую перестановку истины. Однако, поскольку логика такова, как она есть, мы можем прийти к XOR комплиментарным путем…

    XOR = !(A & B & C...) & !(!A & !B & !C...)

    Из которого можно построить арифметику XOR для любого числа факторов в виде…

    (1 - A*B*C...)(1 - (1-A)(1-B)(1-C)...)

    Вот некоторые Excel VBA до XOR весь диапазон ячеек…

    Function ArithmeticXOR(R As Range, Optional EvaluateEquation = True)
    
    Dim AndOfNots As String
    Dim AndGate As String
    For Each c In R
        AndOfNots = AndOfNots & "*(1-" & c.Address & ")"
        AndGate = AndGate & "*" & c.Address
    Next
    AndOfNots = Mid(AndOfNots, 2)
    AndGate = Mid(AndGate, 2)
    
    'Now all we want is (Not(AndGate) AND Not(AndOfNots))
    ArithmeticXOR = "(1 - " & AndOfNots & ")*(1 - " & AndGate & ")"
    If EvaluateEquation Then
        ArithmeticXOR = Application.Evaluate(xor2)
    End If
    
    End Function
    

    Любое n из k

    Последний лакомый кусочек. Иногда вы хотите, чтобы условие было истинным, если любое n число входных данных истинно. Это можно рассматривать как расслабленное состояние AND , при котором вы готовы принять a&b, или a&c, или b&c, например. Это может быть арифметически смоделировано из составной логики…

    (a && b) || (a && c) || (b && c) ...

    и применение наших переводов…

    1 — (1-ab)(1-ac)(1-bc)…

    Это полезно само по себе, но есть также интересная закономерность, когда вы расширяете термины. Существует паттерн комбинаций переменных и экспонент, но он становится очень длинным; однако вы можете упростить его, игнорируя степени для двоичного контекста. Точная картина зависит от того, как Н относится к K. Для n = k-1, где k-общее число проверяемых условий, результат выглядит следующим образом:

    С1 + С2 + С3 … СК — n*∏

    Где c1 — ck — все N-переменные комбинации.

    Например, истина, если бы 3 из 4 условий были выполнены, была бы

    АВС + Абэ + туз + до н. э. — 3abce

    Это имеет совершенный логический смысл, поскольку то, что мы имеем, является аддитивным OR из AND условий минус перекрывающееся AND условие.

    Если вы начнете смотреть на n = k-2, k-3 и т. д. Паттерн становится более сложным, потому что у нас есть больше перекрытий для вычитания. Если это полностью расширить до наименьшего значения n = 1, то мы получим не более чем регулярное условие OR .


    Размышление о Недвоичных значениях и нечеткой области

    Фактическое алгебраическое уравнение XOR a + b - ab(1 + a + b - ab) намного сложнее, чем вычислительно эквивалентные двоичные уравнения, такие как x + y - 2xy и (x-y)² . Означает ли это что-нибудь, и есть ли какая-то ценность в этой дополнительной сложности?

    Очевидно, что для того, чтобы это имело значение, вам придется заботиться о десятичных значениях вне дискретных точек (0,0), (0,1), (1,0), и (1,1). Почему это вообще имеет значение? Иногда вы хотите ослабить целочисленное ограничение для дискретной задачи. В этом случае вы должны взглянуть на предпосылки, используемые для преобразования логических операторов в уравнения.

    Когда дело доходит до перевода булевой логики в арифметику, ваши основные строительные блоки — это операторы AND и NOT , с помощью которых вы можете построить как OR , так и XOR .

    OR = (1-(1-a)(1-b)(1-c)...)

    XOR = (1 - a*b*c...)(1 - (1-a)(1-b)(1-c)...)

    Поэтому, если вы думаете о десятичной области, то стоит подумать о том, как мы определили эти операторы и как они ведут себя в этой области.

    Недвоичное значение NOT

    Мы выражали NOT как 1-x . Очевидно, что это простое уравнение работает для двоичных значений 0 и 1, но самое классное в нем то, что оно также обеспечивает дробный или процентный комплимент для значений от 0 до 1. Это полезно, Так как NOT также известен как Compliment в булевой логике, и когда речь заходит о множествах, NOT относится ко всему, что находится за пределами текущего набора.

    Недвоичное значение AND

    Мы выражали AND как x*y . Опять же, очевидно, что он работает для 0 и 1, но его эффект немного более произволен для значений от 0 до 1, где умножение приводит к частичным истинам (десятичным значениям), уменьшающим друг друга. Можно представить, что вы хотели бы смоделировать истину как усредненную или накопительную в этой области. Например, если два условия гипотетически наполовину истинны, является ли условие AND только четвертью истинным (0.5 * 0.5), или оно полностью истинно (0.5 + 0.5 = 1), или оно остается наполовину истинным ((0.5 + 0.5) / 2)? Как оказалось, четверть истины на самом деле истинна для условий, которые полностью дискретны, а частичная истина представляет вероятность. Например, будете ли вы переворачивать хвосты (двоичное условие, вероятность 50%) оба теперь AND снова во второй раз? Ответ: 0.5 * 0.5 = 0.25, или 25% верно.» для логического типа bool возвращает результат согласно описанным правилам, для остальных же типов проихводится его побитовое применение. Перегрузка для стандартных типов невозможна, но операцию XOR над ними можно реализовать, исходя из принципа «исключающего ИЛИ». Выглядит это так:

    (condition1 || condition2) && (condition1 != condition2)
    

    (при этом нет разницы, применяются ли побитовые операторы & и |, или же логические && и ||)

    Связь с естественным языком

    Часто указывают на сходство между сложением по модулю 2 и конструкцией «либо … либо …» в естественном языке. Составное утверждение «либо A, либо B» считается истинным, когда истинно либо A, либо B, но не оба сразу; в противном случае составное утверждение ложно. Это в точности соответствует определению операции в булевой алгебре, если «истину» обозначать как 1, а «ложь» как 0.

    Эту операцию нередко сравнивают с дизъюнкцией потому, что они очень похожи по свойствам, и обе имеют сходство с союзом «или» в повседневной речи. Сравните правила для этих операций:

    1. истинно, если истинно или , или оба сразу.
    2. истинно, если истинно или , но не оба сразу.

    Операция исключает последний вариант («оба сразу») и по этой причине называется исключающим «ИЛИ». Операция включает последний вариант («оба сразу») и по этой причине иногда называется включающим «ИЛИ». Неоднозначность естественного языка заключается в том, что союз «или» может применяться в обоих случаях.

    См. также

    Wikimedia Foundation.
    2010.

    интересных свойств эксклюзивного OR (XOR) — ML и статистика

    Исключающее ИЛИ — иногда также исключающая дизъюнкция (сокращенно: XOR) или антивалентность — это логическая операция, которая выводит истину только в том случае, если только один из ее обоих входов истинен (то есть, если оба входа различаются). Существует множество приложений, в которых используется XOR, например, в криптографии, кодах Грея, проверках четности и CRC и, конечно же, во многих других.Обычно этот символ используется для обозначения операции XOR. Здесь мы будем использовать символ для Exclusive-OR и для его отрицания — оператор biconditional.
    В этом сообщении блога мы рассмотрим несколько его интересных свойств, которые могут быть полезны.

    Давайте начнем с таблицы истинности Exclusive-OR () и biconditional:

    а б а б а б
    0 0 0 1
    0 1 1 0
    1 0 1 0
    1 1 0 1

    Определение

    Из этой таблицы мы можем извлечь следующие уравнения, которые являются наиболее часто используемым определением операции XOR:

    Обратный элемент

    Обратите внимание, что логическая операция И () записывается как.Обе операции имеют обратный элемент (1 и 0), так что

    Нейтральный элемент

    Для исключающего ИЛИ и двусмысленного также существует нейтральный элемент (0 и 1):

    Идемпотентность

    Легко показать, что XOR не выполняет свойство идемпотентности, которое гласит, что для любой операции, которая у нас есть. Из таблицы истинности видно, что

    .

    Инверсия Эксклюзивного OR

    Мы уже упоминали, что оператор, обратный XOR, является бикондиционным оператором.Это также легко увидеть из таблицы истинности. Однако это также можно показать формально:

    , так как — используя уравнение. \ eqref {eq: definition}:

    Коммутативность

    Коммутативность дана и в обоих случаях:

    с

    Ассоциативность

    Также выполняется ассоциативное свойство:

    с тех пор — с использованием правил \ eqref {eq: definition} и \ eqref {eq: inverseXOR}.

    Распределение

    Как мы увидим позже, конъюнкция (И) и Исключающее ИЛИ (двусмысленное) представляют собой операции умножения и сложения поля Галуа GF (2), и в таком поле они подчиняются закону распределения:

    , так как — с формулой.\ eqref {eq: inverseXOR}:

    Соответственно, это справедливо и для двусмысленного оператора.

    Преобразование одиночного операнда

    , так как — с формулой. \ eqref {eq: inverseXOR}:

    Инвертирование обоих операндов

    , который можно тривиально отобразить с помощью \ eqref {eq: definition}:

    Выражение логического ИЛИ в терминах исключающего ИЛИ

    Находим следующее выражение:

    с — путем раскрытия а и б, с:

    Поскольку приведенное выше уравнение снова содержит дизъюнкцию (ИЛИ), это не похоже на какое-либо улучшение, однако это правило может быть полезно при выводе многих других соотношений.Например, применим к самому себе правило \ eqref {eq: OR-XOR}:

    Давайте сначала определим:

    Затем мы имеем (вставляя исходные выражения для и через некоторое время снова):

    Поскольку термины и не пересекаются, приведенное выше выражение упрощается до:

    Это приводит, наконец, к интересному соотношению:

    Выражение логического И в терминах исключающего ИЛИ

    Аналогично предыдущему абзацу, можно вывести несколько интересных соотношений для логического И (конъюнкции):

    и

    Логическое ИЛИ попарно дизъюнктивных членов

    Используя правило \ eqref {eq: OR-XOR}, мы можем найти другое интересное соотношение для дизъюнктивных форм, где все члены попарно дизъюнктивны.Рассмотрим следующий простой пример — применение правила \ eqref {eq: OR-XOR}:

    В качестве примечания, мы также можем записать вышеупомянутое отношение в обратном порядке, так что:

    С уравнением \ eqref {eq: xorAbsurdum} у нас есть важное соотношение, которое гласит, что все операции OR в дизъюнктивной форме могут быть просто заменены на XOR, если все члены попарно дизъюнктивны. Например, правило можно применить к следующей дизъюнктивной форме:

    Новый взгляд на логическое биконусное и исключающее ИЛИ

    Иногда можно заменить все двусмысленные операции в уравнении на исключающее ИЛИ.Рассмотрим следующий пример — с формулой. \ eqref {eq: inverseXOR} и уравнение. \ eqref {eq: invOne}:

    Или, короче:

    Объединенное ассоциативное свойство логического биконусного и исключающего-ИЛИ

    Аналогично предыдущему, где мы показали ассоциативное свойство биконусного ИЛИ и исключающего ИЛИ для обоих случаев по отдельности, мы также можем показать, что ассоциативное свойство также сохраняется для смешанных членов — с уравнением. \ Eqref {eq: inverseXOR}, \ eqref {eq: invOne} и \ eqref {eq: BicondEqXOR}:

    Это позволяет нам констатировать:

    Комбинированное свойство коммутативности логического биконуса и исключающего ИЛИ

    После того, как мы показали объединенное ассоциативное свойство логического биконуса и исключающего ИЛИ, мы, соответственно, показываем коммутативность.Нам нужно только уравнение. \ eqref {eq: Commutativity} и \ eqref {eq: mixedassociative}. Аргументация тут довольно тривиальна:

    В итоге можно написать:

    Следовательно, все члены в смешанном выражении XOR и двусмысленных выражений попарно взаимозаменяемы. Это очень важное наблюдение, которое часто может помочь на практике.

    Замена операций исключающее ИЛИ в выражении на двуусловные

    Допустим, у нас есть выражение в виде

    Мы хотим заменить все операции на.Как этого добиться? На самом деле это не так уж и сложно. Мы можем рекурсивно применить правила \ eqref {eq: inverseXOR}, \ eqref {eq: invOne} и \ eqref {eq: mixedassociative} следующим образом:

    Вы можете видеть, к чему это идет: после замены первого XOR у нас было отрицание в выражении, которое снова исчезло после замены второго XOR, а затем вернулось с заменой третьего XOR. Итак, в зависимости от количества переменных, в конце у нас либо остается отрицание, либо нет.Это можно выразить как:

    Аналогичным образом, мы находим следующее соотношение, когда заменяем двусловные в выражении операцией XOR:

    Смешанные представления двухусловных и исключающих ИЛИ

    Иногда встречаются смешанные представления двухусловных и исключающих ИЛИ, которые не могут быть эффективно реализованы в цифровой схеме. В этих случаях можно найти представления, состоящие исключительно из XOR или исключительно из двухусловных.Во-первых, мы должны привести наше исходное представление в форму:

    , где состоит только из операций XOR и состоит только из двухусловных. Для символа вставляется любой из них, если мы хотим, чтобы окончательное отношение состояло из XOR, в противном случае вставляется. Обратите внимание, что приведенное выше представление с помощью и может быть легко достигнуто путем простого применения свойства коммутативности из уравнения. \ eqref {eq :commutativeCommutative} к исходному отношению. Тогда вы почти закончили: вам просто нужно применить \ eqref {eq: replaceXOR} к или \ eqref {eq: replaceBiconditional} — в зависимости от того, какой оператор вы предпочитаете — и, наконец, у вас есть красивое представление, содержащее либо только XOR, либо просто двусмысленные.

    Пример

    Заменяем бикусловия в XOR:

    и вставьте обратно в исходное уравнение:

    Электроника Булева алгебра

    Маркус Тилл

    XOR (исключающее ИЛИ) в рубине и немного больше. | Тони Лам

    Я провел небольшое исследование и нашел логический элемент XOR или логический оператор XOR. XOR — это «логический оператор, работающий с двумя переменными, которые имеют значение единицы, если одна, но не обе переменные имеют значение единицы».0b00001110 мы можем начать видеть, как мы получили значение 2.

     00001100 
    00001110
    false, false, false, false, false, false, true, false или 00000010, что является логическим для 2!

    Я подумал, что это что-то интересное, и хотел этим поделиться.

    Шлюз XOR и шлюз XNOR: таблица истинности, символ и логическое выражение

    Что такое шлюз XOR?

    Логический вентиль XOR (также известный как EOR или EXOR вентиль) — произносится как вентиль Exclusive OR — это цифровой логический вентиль, который дает истинное значение (т.е.е. ВЫСОКИЙ или 1) выход, когда количество истинных входов нечетное. Элемент XOR реализует исключающее ИЛИ, т. Е. Истинный выходной результат возникает, если один и только один из входов элемента является истинным. Если оба входа ложны (т.е. НИЗКИЙ или 0) или оба входа истинны, выход будет ложным.

    XOR представляет функцию неравенства, т.е. выход является истинным, если входы не одинаковы; в противном случае результат будет ложным. Распространенный способ запомнить XOR — «должен быть один или другой, но не оба».

    Другой способ взглянуть на вентиль XOR: сумма по модулю двух переменных в двоичной системе выглядит так:

    Логический вентиль выполняет эту операцию суммирования по модулю без включения переноса, известную как вентиль XOR.Элемент XOR обычно представляет собой логический вентиль с двумя входами, где на выходе только логическая 1, когда только один вход является логическим 1. Когда оба входа равны, либо равны 1, либо оба равны 0, выход будет логическим 0.

    Это Причина, по которой вентиль XOR также называется вентилем анти-совпадения или детектором неравенства. Этот вентиль называется вентилем XOR или исключающим ИЛИ, потому что его выход только 1, когда его вход исключительно 1.

    В цифровой электронике другие логические вентили включают вентили НЕ, вентили ИЛИ, вентили И-НЕ и вентили ИЛИ.

    Таблица истинности шлюза XOR

    Таблицы истинности перечисляют выходные данные конкретной цифровой логической схемы для всех возможных комбинаций ее входов. Таблица истинности логического элемента XOR приведена ниже:

    Двоичная операция указанной выше таблицы истинности известна как операция исключающее ИЛИ. Он представлен как A ⊕ B. Символ операции «исключающее ИЛИ» представлен плюсовым кольцом, окруженным кружком ⊕.

    Схема затвора XOR

    Вышеприведенное выражение A ⊕ B можно упростить как,

    Докажем приведенное выше выражение.
    В первом случае рассмотрим A = 0 и B = 0.

    Во втором случае рассмотрим A = 0 и B = 1.

    В третьем случае рассмотрим, A = 1 и B = 0.

    В четвертом случае рассмотрим , A = 1 и B = 1.

    Итак, доказано, что логическое выражение для A ⊕ B есть AB ̅ + ĀB, поскольку это логическое выражение удовлетворяет всем выходным состояниям относительно входных условий элемента XOR.

    Из этого логического выражения можно легко реализовать логическую схему логического элемента XOR, и это будет, как показано,

    Логический символ элемента XOR

    Логический элемент XOR логически представлен как,

    Шлюз XOR с несколькими входами

    Хотя элементы XOR могут иметь только два входа, вы можете выполнить операцию XOR, используя любое количество входов (например,грамм. Операция XOR с 3 входами или операция XOR с 4 входами).

    Более двух входов XOR операция заключается в том, что, когда нечетное количество входов в области логического элемента 1, выход равен 1, а когда ни один или четное количество входов равно 1, выход является логическим 0.

    3 Вход Шлюз XOR

    Давайте реализуем вентиль XOR с тремя входами A, B и C.

    Теперь, согласно определению операции XOR с более чем тремя входами, таблица истинности будет иметь вид

    Эта таблица истинности может быть разработан как,

    . Из разработанной выше таблицы истинности обнаружено, что операция XOR трех двоичных переменных эквивалентна операции XOR одной переменной с результатом операций XOR двух других переменных.

    Из приведенной выше таблицы истинности

    Что такое ворота XNOR?

    Логический вентиль XNOR (также известный как XORN’T, ENOR, EXNOR или NXOR) — и произносится как Exclusive NOR — это цифровой логический вентиль, функция которого является логическим дополнением логического элемента исключающего ИЛИ (вентиль XOR). Логично, что вентиль XNOR — это вентиль NOT, за которым следует вентиль XOR.

    Операция XOR для входов A и B — A ⊕ B; следовательно, операция XNOR для этих входов будет (A + B) ̅. Это означает, что выход логического элемента XOR инвертируется в вентиле XNOR.

    В операции логического элемента XOR выход равен 1, когда только один вход равен 1. Выход является логическим 0, когда оба входа одинаковы, то есть они либо 1, либо 0. Но в вентиле XNOR обратное верно. . Следовательно, выход равен 0, когда только один вход равен 0, и выход равен 1, когда оба входа одинаковы (то есть либо два нуля, либо две единицы).

    См. Таблицу истинности ворот XNOR ниже для визуального представления этого.

    Таблица истинности шлюза XNOR

    Таблица истинности шлюза XNOR показана ниже:

    Логическая операция XNOR представлена ​​символом.Это точка, обведенная кружком. Выражение операции XNOR между переменными A и B представлено как A ⊙ B.
    И снова таблица истинности удовлетворяется уравнением AB + ĀB ̅.

    Следовательно, доказано, что A ⊙ B = AB + ĀB ̅. То же самое можно доказать и с помощью K-отображения.

    Схема логического элемента XNOR

    Выражение операции XNOR может быть реализовано с использованием двух вентилей НЕ, двух вентилей И и одного логического элемента ИЛИ в качестве последователей,

    Символ логического элемента XNOR:

    3 Входной элемент XNOR

    Как и элемент XOR, элемент XNOR существует только с двумя входами, но для операции XNOR с более чем двумя входами мы должны использовать более одного элемента XNOR.

    Работа XNOR с более чем двумя входами аналогична. Когда есть нечетные числа входов в состоянии высокого уровня или логической 1, на выходе будет 0; в противном случае на выходе будет 1.

    Теперь,

    Из этой сложной таблицы истинности логический символ трех входных вентилей XNOR может быть представлен как,

    Применения вентилей XOR

    Основное применение вентилей Исключающее ИЛИ находится в действии половинного и полного сумматора. Если мы внимательно посмотрим на таблицу истинности, мы обнаружим, что первые три результата полностью удовлетворяют процессу двоичного сложения.Тем не менее, в последней входной последовательности, т.е. когда оба входа равны 1, результат в соответствии с правилом сложения должен быть 0 с переносом 1. В таблице истинности мы получаем желаемый 0, но недостающий 1.

    To Чтобы решить эту проблему при разработке схемы сумматора, логический элемент И добавляется к логическому элементу Ex-OR параллельно. Подробно покажем схему сумматора.

    Из приведенной выше диаграммы мы можем видеть, что два входа проходят через логический элемент «Исключающее ИЛИ» и логический элемент И параллельно в схеме полусумматора.И с помощью этой схемы мы плавно получаем весь процесс двоичного сложения.

    Генерация псевдослучайных чисел — для моделирования сдвигового регистра с линейной обратной связью используются вентили Ex-OR, которые генерируют случайную последовательность битов.

    Что такое логический вентиль (AND, OR, XOR, NOT, NAND, NOR и XNOR)? Определение с сайта WhatIs.com

    Логический вентиль — это устройство, которое действует как строительный блок для цифровых схем. Они выполняют основные логические функции, которые являются фундаментальными для цифровых схем.В большинстве электронных устройств, которые мы используем сегодня, есть логические вентили. Например, логические вентили могут использоваться в таких технологиях, как смартфоны, планшеты или в устройствах памяти.

    В схеме логические вентили будут принимать решения на основе комбинации цифровых сигналов, поступающих с их входов. Большинство логических вентилей имеют два входа и один выход. Логические вентили основаны на булевой алгебре. В любой момент каждый терминал находится в одном из двух двоичных состояний: ложном или истинном. Ложь представляет 0, а истина представляет 1.В зависимости от типа используемого логического элемента и комбинации входов двоичный выход будет отличаться. Логический вентиль можно представить себе как выключатель света, в котором в одном положении выход выключен — 0, а в другом — включен — 1. Логические вентили обычно используются в интегральных схемах (IC).

    Базовые логические вентили

    Существует семь основных логических вентилей: И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, НЕ, И-НЕ, ИЛИ-ИЛИ и ИСКЛЮЧИТЕЛЬНО.

    И | ИЛИ | XOR | НЕ | NAND | NOR | XNOR

    Логический элемент И назван так потому, что, если 0 называется «ложным», а 1 называется «истиной», вентиль действует так же, как логический оператор «И».На следующем рисунке и в таблице показаны символы схемы и логические комбинации для логического элемента И. (В этом символе входные клеммы находятся слева, а выходная клемма — справа.) Выходной сигнал «истина», когда оба входа «истина». В противном случае вывод будет «ложным». Другими словами, выход равен 1 только тогда, когда оба входа один И два равны 1.

    И ворота

    Ввод 1 Ввод 2 Выход
    1
    1
    1 1 1

    Логический элемент OR получил свое название из-за того, что он ведет себя по образцу логического включающего «или».«Выход -« истина », если один или оба входа« истина ». Если оба входа« ложь », то выход« ложь ». Другими словами, для выхода будет 1, по крайней мере, вход один ИЛИ два должны быть 1.

    OR ворота

    Ввод 1 Ввод 2 Выход
    1 1
    1 1
    1 1 1

    Шлюз XOR (исключающее ИЛИ) действует так же, как логическое «или / или».«Выход -« истина », если один из входов, но не оба,« истина ». Выход« ложь », если оба входа« ложь »или если оба входа« истина ». Другой способ взглянуть на это Схема должна следить за тем, чтобы на выходе было 1, если входы разные, и 0, если входы одинаковые.

    ворота XOR

    Ввод 1 Ввод 2 Выход
    1 1
    1 1
    1 1

    Логический инвертор, иногда называемый вентилем НЕ, чтобы отличать его от других типов электронных инверторных устройств, имеет только один вход.Это меняет логическое состояние на обратное. Если на входе 1, то на выходе 0. Если на входе 0, то на выходе 1.

    Инвертор или НЕ вентиль

    Шлюз И-НЕ работает как вентиль И, за которым следует вентиль НЕ. Он действует как логическая операция «и» с последующим отрицанием. На выходе будет «ложь», если оба входа «истина». В противном случае на выходе будет «истина».

    вентиль NAND

    Ввод 1 Ввод 2 Выход
    1
    1 1
    1 1
    1 1

    Логический элемент ИЛИ-НЕ представляет собой комбинацию логического элемента ИЛИ, за которым следует инвертор.Его выход будет «истина», если оба входа «ложь». В противном случае вывод будет «ложным».

    NOR ворота

    Ввод 1 Ввод 2 Выход
    1
    1
    1
    1 1

    Логический элемент XNOR (исключающее ИЛИ) — это комбинированный вентиль XOR, за которым следует инвертор.Его вывод — «истина», если входы одинаковые, и «ложь», если входы разные.

    Ворота XNOR

    Ввод 1 Ввод 2 Выход
    1
    1
    1
    1 1 1

    Сложные операции могут выполняться с использованием комбинаций этих логических вентилей.Теоретически нет ограничений на количество ворот, которые могут быть объединены в одно устройство. Но на практике существует ограничение на количество ворот, которые могут быть упакованы в данное физическое пространство. Массивы логических вентилей находятся в цифровых ИС. По мере развития технологии ИС требуемый физический объем для каждого отдельного логического элемента уменьшается, и цифровые устройства того же или меньшего размера становятся способными выполнять все более сложные операции с постоянно увеличивающейся скоростью.

    Состав логических вентилей

    Высокий или низкий двоичные состояния представлены разными уровнями напряжения.Логическое состояние терминала может и обычно часто изменяется по мере того, как схема обрабатывает данные. В большинстве логических вентилей низкое состояние составляет приблизительно ноль вольт (0 В), а высокое состояние — приблизительно пять вольт положительного напряжения (+5 В).

    Логические вентили могут быть выполнены из резисторов и транзисторов или диодов. Резистор обычно можно использовать в качестве подтягивающего или понижающего резистора. Подтягивающие и понижающие резисторы используются, когда есть какие-либо неиспользуемые входы логического элемента для подключения к логическому уровню 1 или 0.Это предотвращает ложное переключение ворот. Подтягивающие резисторы подключены к Vcc (+ 5 В), а подтягивающие резисторы подключены к земле (0 В).

    Обычно используются логические вентили TTL и CMOS. ИС TTL или транзисторно-транзисторной логики будут использовать биполярные переходные транзисторы типа NPN и PNP. КМОП, или дополнительные металл-оксидно-кремниевые ИС, построены из полевых транзисторов типа MOSFET или JFET. ИС TTL обычно обозначают как микросхемы серии 7400, в то время как КМОП-микросхемы часто обозначают как микросхемы серии 4000.

    Функция XOR — формула, примеры, как использовать функцию XOR

    Что такое функция XOR?

    Функция XOR была введена в Excel 2013 и доступна в разделе «Логические функции Excel». Это логическая функция «исключающее ИЛИ». Для двух заданных логических операторов функция XOR вернет TRUE, если одно из операторов истинно, и FALSE, если оба оператора истинны. Если ни одно из утверждений не является истинным, также возвращается FALSE.

    Формула

    = XOR (логический1, [логический2],…)

    Функция XOR включает следующие аргументы:

    Logical1, logic2 — логический1 является обязательным аргументом, тогда как логические2 и последующие логические значения являются необязательными. .

    Как использовать функцию XOR в Excel?

    Функция XOR, как упоминалось выше, возвращает логические результаты. Она предоставит следующие результаты в различных сценариях:

    В случае более двух логических операторов функция вернет:

    1. ИСТИНА — когда нечетное число аргументов принимает значение ИСТИНА;
    2. FALSE — Когда все утверждения ложны или когда общее количество утверждений ИСТИНА четное.

    Чтобы понять, как используется эта функция и как ее можно использовать, давайте рассмотрим несколько примеров:

    Пример 1

    Используя функцию XOR, мы получим следующие результаты:

    Снимок экрана с результатами в Excel показан ниже:

    Пример 2

    Предположим, в хоккейном турнире участвуют шесть международных команд. Каждая команда уже сыграла по две игры.У нас есть результаты их первых двух игр, и теперь мы хотим узнать, какая команда сыграет в третьей игре, исходя из следующих условий турнира:

    1. Команды, выигравшие обе игры, выходят в финал.
    2. Команды, проигравшие обе игры, выбывают из турнира.
    3. Команды, выигравшие только одну игру из двух, должны сыграть в третью игру, чтобы определить, какая команда перейдет в следующий раунд, а какая нет.

    Результаты первых двух игр следующие:

    Теперь, чтобы выяснить, должна ли команда играть в третью игру, мы можем использовать простую формулу = XOR (C5 = «Выиграли». , D5 = «Выиграл»).Однако мы также можем вложить его, используя формулу ЕСЛИ, как показано ниже:

    Мы получаем следующие результаты:

    Используемая здесь формула: », C2 =« Выигран »),« Да »,« Нет »). Таким образом, XOR упростил объединение команд.

    Обычно XOR используется вместе с другой логической функцией. Добавление формулы ЕСЛИ будет делать одно, если условие ИСТИНА, и другое, если условие ЛОЖЬ. Часто при использовании функции ИЛИ мы «вкладываем» ее в функцию ЕСЛИ.

    Другие логические функции, которые можно использовать, — это функции И, которые проверяют выполнение всех условий. Мы также можем использовать формулу ИЛИ, чтобы проверить, выполняется ли одно или несколько условий.

    Что нужно помнить о функции XOR

    1. Функция XOR позволяет нам тестировать до 254 функций.
    2. XOR игнорирует пустые ссылки.
    3. #VALUE! ошибка будет возвращена, если логические значения не найдены.
    4. # ИМЯ! ошибка будет возвращена, если функция используется в версиях Excel до 2013.
    5. Аргументы должны оцениваться как логические значения, такие как ИСТИНА или ЛОЖЬ, или в массивах или ссылках, которые содержат логические значения.

    Щелкните здесь, чтобы загрузить образец файла Excel

    Дополнительные ресурсы

    Спасибо, что прочитали руководство CFI по важным функциям Excel! Потратив время на изучение и освоение этих функций, вы значительно ускорите свой финансовый анализ. Чтобы узнать больше, ознакомьтесь с этими дополнительными ресурсами CFI:

    • Функции Excel для FinanceExcel for FinanceЭто руководство по Excel для финансов научит 10 основных формул и функций, которые вы должны знать, чтобы стать отличным финансовым аналитиком в Excel.В этом руководстве есть примеры, скриншоты и пошаговые инструкции. В конце загрузите бесплатный шаблон Excel, который включает в себя все финансовые функции, описанные в руководстве
    • Расширенный курс формул Excel
    • Расширенные формулы Excel, которые вы должны знать Расширенные формулы Excel, которые необходимо знатьЭти расширенные формулы Excel очень важны и помогут вам в финансовом анализе. навыки на новый уровень. Расширенные функции Excel
    • Ярлыки Excel для ПК и MacExcel Ярлыки ПК MacExcel Ярлыки — Список наиболее важных и распространенных ярлыков MS Excel для пользователей ПК и Mac, специалистов в области финансов и бухгалтерского учета.Сочетания клавиш ускоряют ваши навыки моделирования и экономят время. Изучите редактирование, форматирование, навигацию, ленту, специальную вставку, манипулирование данными, редактирование формул и ячеек и другие короткие статьи

    Почему исключительное или (XOR) важно в криптографии?

    Если вы изучаете криптографию или просто пытаетесь понять основы, вы, возможно, заметили, что операция «исключающее ИЛИ» используется довольно часто, особенно в шифрах.

    Что такое XOR (⊕)?

    XOR, или «исключающее ИЛИ», работает с двоичными данными.Он возвращает истину, если оба его входа противоположны (один ложный и один истинный), в противном случае он возвращает ложь.

    Пример кода go будет примерно таким:

      func exclusiveOr (a bool, b bool) bool {
        вернуть a! = b
    }
      

    XOR Cipher — идеальный шифр

    Операция XOR может использоваться как простой шифр для шифрования и дешифрования сообщений с помощью одного ключа. Это называется симметричным шифрованием.

    Интересно отметить, что если:

    1. Ключ того же размера, что и сообщение
    2. Ключ хранится в секрете и генерируется случайным образом

    Тогда шифр взломать невозможно. Это называется одноразовой записной книжкой. Однако простой XOR не следует использовать в производстве из-за того, что длина ключа должна быть слишком большой, чтобы быть практичной.

    Пример шифра

    В качестве простого примера зашифруем слово «привет»

    1. Преобразуйте «привет» в двоичную форму, вот бесплатный инструмент: https: // www.rapidtables.com/convert/number/ascii-to-binary.html)
    1. Создайте случайный секретный ключ такой же длины:
    1. Создайте зашифрованное сообщение, применив XOR к сообщению и ключу:
      01101000 01101001 ("привет") XOR 01010010 01000101 (секретный ключ) = 00111010 00101100 (зашифрованное сообщение)
      
    1. Расшифруйте сообщение, снова применив XOR ключа к зашифрованному сообщению:
      00111010 00101100 (зашифрованное сообщение) XOR 01010010 01000101 (секретный ключ) = 01101000 01101001 ("привет")
      

    Почему это работает?

    XOR работает как шифр, потому что он сам по себе инверсный.

    𝑎 = (𝑎 ⊕ 𝑏) ⊕ 𝑏

    И, как мы продемонстрировали в нашем примере:

    зашифровано = сообщение ⊕ ключ

    и

    сообщение = зашифровано ⊕ ключ

    Используется ли XOR в производственных шифрах?

    Простой шифр XOR не используется в производстве, поскольку непрактично использовать ключи той же длины, что и тело сообщения. Однако XOR по-прежнему чрезвычайно полезен. Фактически, он используется почти во всех алгоритмах симметричного шифрования.XOR — это основная операция на этапе «добавления ключа раунда» AES-256. Он также используется в шифре DES.

    Спасибо за чтение

    Переулок

    в Твиттере: @wagslane

    Переулок

    на Dev.to: wagslane

    Загрузить Qvault: https://qvault.io

    Сообщение Почему эксклюзивное или (XOR) важно в криптографии? впервые появился на Qvault.

    логических операций — Учебники по C ++

    Бит — это минимальный объем информации, который мы можем себе представить, поскольку он хранит только значение 1 или 0, которое представляет либо ДА, либо НЕТ, активировано или деактивировано, истина или ложь и т. Д… то есть: два возможных состояния, каждое из которых противоположно другому, без возможности каких-либо оттенков. Мы собираемся принять во внимание, что два возможных значения бита — 0 и 1.

    Некоторые операции могут выполняться с битами либо вместе с другими битами, либо сами по себе. Эти операции получили название логических операций — слово, которое происходит от имени одного из математиков, внесших наибольший вклад в эту область: Джорджа Буля (1815-1864).

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

    И

    Эта операция выполняется между двумя битами, которые мы назовем a и b. Результатом применения этой операции И будет 1, если и a, и b равны 1, и 0 во всех остальных случаях (т. Е. Если одна или обе переменные равны 0).

    И (&)

    ИЛИ

    Эта операция выполняется между двумя битами (a и b).)

    НЕ

    Эта операция выполняется с одним битом. Его результатом является инверсия фактического значения бита: если он был установлен в 1, он становится 0, а если он был 0, он становится 1:

    НЕ (~)

    Это 4 основные логические операции (AND, OR, XOR и NOT).