Сложение по модулю 2
Сложе́ние по мо́дулю 2 (логи́ческое сложе́ние, исключа́ющее «ИЛИ», строгая дизъюнкция, XOR, поразрядное дополнение, побитовый комплемент) — булева функция, а также логическая и битовая операция. В случае 2 переменных результат выполнения операции является истинным тогда и только тогда, когда лишь один из аргументов является истинным. Для функции трёх и более переменных результат выполнения операции будет истинным только тогда, когда количество аргументов равных 1, составляющих текущий набор — нечетное. Такая операция естественным образом возникает в кольце вычетов по модулю 2, откуда и происходит название операции.
Сложение по модулю 2 следует отличать от простого сложения, которое соответствует обыкновенному неисключающему «или» (логической дизъюнкции).
В теории множеств сложению по модулю 2 соответствует операция симметричной разности двух множеств.
Содержание
Обозначения
Запись может быть префиксной («польская запись») — знак операции ставится перед операндами, инфиксной — знак операции ставится между операндами и постфиксной — знак операции ставится после операндов. При числе операндов более 2-х префиксная и постфиксная записи экономичнее инфиксной записи. Чаще всего встречаются следующие варианты записи:
a ≡ b (операция равнозначности или сравнения по модулю)
Булева алгебра
В булевой алгебре сложение по модулю 2 — это функция двух, трёх и более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества
, а «ложь» как
.
Эту операцию нередко сравнивают с дизъюнкцией потому, что они очень похожи по свойствам, и обе имеют сходство с союзом «или» в повседневной речи. Сравните правила для этих операций:
- логическое сложение,
- исключающее «ИЛИ»,
- строгая дизъюнкция,
- XOR,
- поразрядное дополнение,
- побитовый комплемент.
истинно, если истинно
исключает последний вариант («оба сразу») и по этой причине называется исключающим «ИЛИ». Операция
включает последний вариант («оба сразу») и по этой причине иногда называется включающим «ИЛИ». Неоднозначность естественного языка заключается в том, что союз «или» может применяться в обоих случаях.
Квантовые вычисления
В квантовых компьютерах аналогом операции сложения по модулю 2 является вентиль CNOT.
1.1.2Операция сумма по модулю два
Кроме основных операций алгебры логики, определяемых аксиомами (1.2)‑(1.5), целесообразно пользоваться более сложными операциями, такими как И-НЕ (1.13), ИЛИ-НЕ и сумма по модулю два.
Операция сумма по модулю два (исключающее ИЛИ, логическая неравнозначность) обозначается символом и определяется соотношением
На основании аксиом алгебры логики можно показать, что
Из данных соотношений следует, что значение ху совпадает со значением младшего разряда суммы двух двоичных чисел, где х и у – значения младших разрядов этих чисел. Соответственно этому значение i-го разряда суммы двух двоичных чисел будет определяться значением хiyizi, где хi и yi – значения i-х разрядов двоичных чисел, а zi – перенос в i-й разряд из предыдущего i–1-го разряда.
С точки зрения приоритетности выполнения операция исключающее ИЛИ занимает промежуточное положение между операциями И и ИЛИ.
1.2. Логические элементы
Физическое устройство, реализующую одну из основных операций алгебры логики, Называется логическим элементом (ЛЭ). Схема, составленная из конечного числа ЛЭ по определенным правилам, соответствующим заданной логической функции, называется логической схемой (ЛС). Построение ЛС основано на следующих правилах:
выход ЛЭ можно подсоединять ко входам нескольких ЛЭ;
на входы ЛЭ можно подавать сигналы, представляющие собой константы 0 и 1;
выходы ЛЭ нельзя соединять вместе (кроме так называемых ЛЭ с открытым коллекторным выходом);
выходы ЛЭ нельзя напрямую подключать к собственным входам.
ЛЭ может иметь любое число обратных связей, по которым выходные сигналы некоторых ЛЭ возвращаются на собственные входы, предварительно пройдя через некоторое число других ЛЭ.
Логические элементы выпускаются в виде интегральных схем. На рисунке представлены условные графические обозначения (УГО) таких элементов, выполненные в соответствии с требованиями ЕСКД:
Элемент НЕ (NOT, Inverter). Функция .
Элемент И (AND). Функция .
Элемент И-НЕ (NAND). Функция .
Элемент ИЛИ (OR). Функция .
Элемент ИЛИ-НЕ (NOR). Функция .
Элемент исключающее ИЛИ (ХOR). Функция .
Элемент И-ИЛИ-НЕ (AND-NOR). Функция .
Ряд ЛЭ может быть реализован на ЛЭ других типов. Например, ЛЭ «исключающее ИЛИ» можно реализовать на ЛЭ типа 2И-НЕ:

Действительно, логическая функция для элемента «исключающее ИЛИ» задается выражением (1.18). Приведенная схема реализует функцию
что соответствует функции «исключающее ИЛИ».
Комбинационные схемы
В комбинационных схемах логическая функция зависит только от комбинации значений входных переменных.
При описании многих цифровых устройств невозможно обойтись без упорядоченных двоичных наборов входных и выходных сигналов. Эти наборы удобно представлять в тех или иных системах счисления (СС).
1.3. Некоторые системы счисления
В позиционных СС «вес» каждого разряда зависит от его позиции в числе. К числу непозиционных относится «римская» СС, например число XVII.
Любое целое неотрицательное n-разрядное целое число в позиционной системе счисления может быть представлено в виде:
где D – десятичный эквивалент числа, С – значение i-гo разряда, b – основание системы счисления, b в степени i – вес (весовой коэффициент) i-гo разряда.
В цифровой и вычислительной технике наиболее распространены двоичная (BIN), десятичная (DEC), шестнадцатеричная (HEX) и непозиционная двоично-десятичная (BCD) системы счисления. В BCD системе вес каждого i-гo десятичного разряда равен 10 в степени i, как в десятичной системе, а каждая цифра i-гo разряда кодируется 4-мя двоичными цифрами. Восьмиричная СС (ОСТ) применяется реже. В 16-ной системе счисления цифры от 0 до 9 совпадают с десятичными, а для ЦИФР больше 9 используются буквы латинского алфавита : А(а) = цифра 10, В(b)=11, С(с)=12, D(d)=13, Е(е)=14, F(f)=15. Двоичное число преобразуется в десятичное беззнаковое число по формуле (2.1), например
10010011 = 1*2 7 + 1*2 4 + 1*2 1 + 1*2 0 = 147 (DEC).
Для перевода числа из двоичной системы в 16-ную, его необходимо разбить, начиная справа, на группы по 4 двоичных цифры и в каждой четверке просуммировать веса (8,4,2,1), соответствующие единичным значениям С. Для обратного перевода каждая HEX цифра заменяется четверкой двоичных, незначащие нули слева, если они есть, отбрасываются.
Найдите десятичное число без знака, соответствующее двоичному числу 00111011.
Mod и остаток — не одно и то же

Приготовьтесь, вас ждёт крайне педантичная статья, которая вполне может спасти вас на собеседовании или сэкономить несколько часов при вылавливании бага в продакшне!
Я сейчас активно работаю над вторым сезоном «Руководства для самозванца» и пишу о шифре RSA для SSH, который, очевидно, является самым загружаемым фрагментом кода в истории IT.
Хочется полностью разобраться в этой истории. Кто придумал этот шифр, как он работает, почему работает и будет ли работать в будущем. Сейчас я раскопал одну чертовски интересную историю. Я не криптоманьяк и вижу, как других буквально засасывает в эту область. Но мне это тоже интересно, потому что повсюду есть маленькие норки, а меня как сороку привлекают блестящие штучки в глубоких норках. Я также очень хорош в метафорах.
В любом случае: на прошлой неделе я узнал что-то странное и хочу поделиться: оказывается, mod и остаток от деления — не одно и то же. Действительно забавно то, что некоторые читатели при этих словах выпрыгивают со своих кресел и орут: «А ведь именно это я всегда пытался сказать вам и всем остальным!»
Позовите ребят из секты «mod не остаток»! Это для вас.
Что такое mod?
Я должен был изучить это, как и в прошлый раз, когда всплыла такая тема. Это одна из тех вещей, которые ты знаешь, но не запоминаешь. Когда вы применяете mod, то делите одно число на другое и берёте остаток. Итак: 5 mod 2 будет 1, потому что 5/2=2 с остатком 1.
Термин mod означает операцию modulo, с модулем 2 в данном случае. Большинство языков программирования используют % для обозначения такой операции: 5 % 2 = 1 .
Вот где мы попадаем в странную серую область.
Математика циферблата
Помню, как учил это в школе, а потом забыл. Существует тип математики, называемый «модульной арифметикой», которая имеет дело с циклическими структурами. Самый простой способ представить это — циферблат с циклом 12. Для математика циферблат — это mod 12 . Если хотите понять, можно ли равномерно разделить 253 часа на дни, то можете применить операцию 253 mod 24 , результатом будет 13, поэтому ответ «нет»! Мы можем ответить «да» только если результат 0.
Другой вопрос, который вы можете задать: «Если я выеду в 6 вечера, сколько времени будет по приезду через 16 часов?». Это будет 6 + 16 mod 12 , то есть 10.
Криптографы любят mod , потому что при использовании с действительно большими числами можно создать нечто, известное как «односторонние функции». Это специальные функции, которые позволяют легко вычислить что-то в одном направлении, но не в обратном.
Если я скажу вам, что 9 является результатом возведения в квадрат, вы можете легко определить, что на входе было 3. Перед вами весь процесс от начала до конца. Если я скажу, что 9 является результатом mod 29 , то будет сложнее понять, что на входе.
Криптографам нравится эта идея, потому что они могут использовать деление с остатком с гигантскими простыми числами для генерации криптографических ключей. Это совсем другая история: если хотите прочитать об этом, то можете купить книгу или, ещё лучше, поддержать мои усилия написать её.
Впрочем, не будем отклоняться от темы.
Остатки и математика циферблата
Теперь переходим к сути: modulo и простой остаток одинаковы, когда числа положительны, но отличаются в случае отрицательных чисел.
Рассмотрим такую задачу:
Каково значение x ? Делим числа и получаем 7 как остаток от 12. Это верный ответ. Как насчет такого:
Используя обычную математику, мы можем умножить -12 на -1, что даёт 12, и у нас по-прежнему остаётся 7, поэтому наш ответ снова 7.
JavaScript с этим согласен:

C# тоже согласен:

Google согласен с первым утверждением, но не согласен со вторым:

Ruby согласен с Google:

Во имя Дейкстры, что здесь происходит?
Вращение часов назад
Чтобы ответить на вопрос, следует понять разницу между остатком и modulo. Программисты объединяют эти операции, но не должны этого делать, потому что они дают одинаковый результат только в случае, если делитель (в нашем случае 12) положителен. Вы можете легко отправить баги в продакшн, если делитель отрицательный.
Но почему существует разница? Рассмотрим положительный делитель 19 mod 12 на часах:

Конечный результат 7. Мы это знаем и мы можем доказать математически. Но что насчёт 19 mod -12 ? Здесь нужно использовать другие часы:

Модуль равен -12, и мы не можем игнорировать или изменить его, умножив на -1, поскольку модульная арифметика так не работает. Единственный способ правильно рассчитать результат — переставить метки на часах так, чтобы мы двигались от -12 или вращали часы против часовой стрелки, что даёт тот же результат.
Почему не начать метки с -1, двигаясь к -2, и т.д.? Потому что в таком случае мы будем двигаться назад и постоянно уменьшать результат, пока не достигнем -12, и в этот момент сделаем прыжок +12, а modulo так не работает.
Это известная вещь
Прежде чем назвать меня сумасшедшим и начать гуглить тему: это известный факт. На самом деле MDN (Mozilla Developer Network) даже дошла до того, чтобы назвать % операцией «остатка» (remainder), а не modulo:
Вот что Эрик Липперт, один из богов C#, говорит о modulo в C#:
А как на вашем языке?
Ну и что?
Могу понять, если вы дочитали досюда, а теперь чешете голову и задаётесь вопросом, стоит ли беспокоиться. Думаю, что стоит по двум причинам:
Сумма по модулю два
Неодназночностью (суммой по модулю два) двух высказываний a и b называется новое высказывание, которое будет истинно тогда, когда одно из высказываний a или b истинно, а другое ложно.
Сумма по модулю два обозначается знаком ⊕.
Синонимы:
Значения функции суммы по модулю два представлены в таблице:
Логическим элементом суммы по модулю два является:

К логическим операциям так же относятся:
Унарные:
Бинарные
Чтобы построить таблицу истинности онлайн по заданной формуле или вектору вы можете воспользоваться нашим сервисом, который кроме того так же вычисляет СКНФ, СДНФ, строит полином Жегалкина. Результат работы можно скачать в формате rtf, который открывается любым текстовым редактором (MS Word, Open Office Write и т.д.)
Важной операцией в информатике является сложение по модулю. Это операция арифметического сложения, при котором единица переноса в старший разряд, если таковая образуется при поразрядном сложении, отбрасывается. Обычно при выполнении этой операции конкретизируют, о каком модуле идет речь, например, по модулю 10, или по модулю 2, или по модулю 16. Обозначается эта операция ⊕.
Таблица сложения двоичных чисел по модулю 2 приведена ниже (обозначения строк и столбцов соответствуют слагаемым):
Пример 7. Сложить по модулю 2 двоичные числа 10 и 11.
Сложение выполним поразрядно:
1) разряд единиц: 0⊕1 = 1;
2) разряд десятков: 1⊕1 = 0.
Таким образом, 102⊕112 = 012. Чтобы подчеркнуть, что в сложении участвовали двухразрядные слагаемые, в результате оставляются обе цифры.
Таблица сложения десятичных чисел по модулю 10 приведена ниже (обозначения строк и столбцов соответствуют слагаемым):
Пример 8. Сложить по модулю 10 десятичные числа 59 и 152.
Сложение выполним поразрядно:
1) разряд единиц: 9⊕2 = 1;
2) разряд десятков: 5⊕5 = 0;
3) разряд сотен: 0⊕1 = 1.
Таким образом, 59⊕152 =101.
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10236 — | 7596 — или читать все.
91.146.8.87 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.
Отключите adBlock!
и обновите страницу (F5)
очень нужно
Сложемние по модулю 2 — булевская функция, которая соответствует логическому «исключающему ИЛИ». Это означает, что результат выполнения операции является истинным только при условии, если является истинным в точности один из аргументов. Такая операция естественным образом возникает в кольце вычетов по модулю 2, откуда и происходит название операции.
Сложение по модулю 2 следует отличать от простого сложения, которое соответствует обыкновенному «неисключающему ИЛИ».
В теории множеств сложению по модулю 2 соответствует операция симметричной разности двух множеств.
Запись может быть префиксной («польская запись») — знак операции ставится перед операндами, инфиксной — знак операции ставится между операндами и постфиксной — знак операции ставится после операндов. При числе операндов более 2-х префиксная и постфиксная записи экономичнее инфиксной записи. Чаще всего встречаются следующие варианты записи:
Булева алгебра
В булевой алгебре сложение по модулю 2 — это функция двух, трёх и более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества . Результат также принадлежит множеству . Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений может использоваться любая другая пара подходящих символов, например или или «ложь», «истина».
для бинарного сложения по модулю 2
Правило (только для бинарного сложения по модулю 2): результат равен , если оба операнда равны; во всех остальных случаях результат равен .