Сумматор
Содержание
Аналоговый сумматор
Думаю, все из вас помнят
Если, допустим, цена нашего квадратика 1 В, то на данной картинке мы видим постоянное напряжение амплитудой в 1 В. Суммировать постоянное напряжение – одно удовольствие. Для этого достаточно сложить амплитуды этих сигналов в любой момент времени.
На рисунке ниже мы видим два сигнала A и B и сумму этих сигналов: A+B. Если сигнал A = 2 В, сигнал B = 1 В, то сумма этих сигналов составит 3 В.
Все то же самое касается и сигналов с отрицательной полярностью
Как вы видите, при сложении сигналов с равной амплитудой, но разной полярности, мы в сумме получаем 0. То есть эти два сигнала взаимно себя скомпенсировали: 1 +(-1)=0. Все становится намного веселее, если мы начинаем складывать сигналы, которые меняются во времени, то есть переменные сигналы. Они могут быть как периодические, так и непериодические.
Давайте для начала рассмотрим самый простой пример. Пусть у нас будут два синусоидальных сигнала с одинаковыми амплитудами, частотами и фазами. Подадим их на сумматор. Что получится в итоге?
Получим синусоиду с амплитудой в два раза больше. Как вообще она получилась? Вычисления производятся довольно просто. Каждая точка синусоиды A+B – это сложение точек в одинаковый момент времени синусоид А и B. Для наглядности мы взяли 3 точки: t1 , t2 и t3 .
Как вы видите, в момент времени t1 у нас амплитуда сигнала А была равна 1 В, амплитуда сигнала В тоже 1 В. В сумме их результат в момент времени t1 будет равен 2 В, что мы и видим на сигнале A+B. В момент времени t2 амплитуда сигнала A была 0 В, амплитуда сигнала В тоже 0 В. Как нетрудно догадаться, 0+0=0, что мы и видим на сигнале A+B в момент времени t2 . Ну а в момент времени t3 амплитуда сигнала А = -1 В, амплитуда сигнала В = -1 В, в результате их сумма -1+(-1) = – 2 В, что мы как раз и видим на синусоиде А+B в момент времени t3 . Отсюда напрашивается вывод: для сложения сигналов надо суммировать амплитуды сигналов в одинаковые моменты времени.
А давайте сместим фазу одного из сигналов на 180 градусов, относительно другого, но при этом амплитуды и частоты сигналов оставим без изменения. Про такие сигналы говорят, что они находятся в противофазе. Как думаете, чему будет равняться их сумма? Долго не думая, смещаем второй сигнал на 180 градусов и суммируем их амплитуды в каждый момент времени. Нетрудно догадаться, что их сумма будет равняться нулю, что мы и видим на рисунке ниже.
Что дальше
Комбинируя эти три логические схемы (там есть ещё четвёртая, она делается из трёх основных), мы сможем собрать такой каскад транзисторов, который поможет нам складывать числа. Забегая немного вперёд, вот каскад, который способен сложить два числа, если эти числа — единицы или ноли:
Этот каскад может сложить число размером 1 бит (единица или ноль). Его возможные результаты:
00 — ноль
01 — единица
10 — двойка в двоичном счислении
Если такой каскад «схлопнуть» до одной коробочки (и немного допилить), а потом соединить между собой несколько коробочек, можно складывать более сложные числа. Например, такой каскад сложит два числа до 4 бит, от 0 до 15:
Что мы узнали на этом этапе.
- Транзисторы можно соединять по-разному: по цепочке, параллельно, как-то ещё хитро.
- В зависимости от схемы соединения эта конструкция из транзисторов будет давать разные результаты. Например, лампочка будет гореть при выключенном выключателе. Или будет гореть, когда включён хотя бы один. Или когда включены оба.
- Эти схемы соединений помогают воспроизвести простые логические операции: НЕ, И, ИЛИ.
- Из этих логических операций можно собрать простейший сумматор единицы и ноля.
- Из простейшего сумматора можно каскадом собрать более сложный, например, для чисел от 0 до 15.
- А дальше просто наслаиваешь эти сумматоры друг на друга, соединяешь разными хитрыми образами, и у тебя получается всё более и более сложная вычислительная машина.
Кому нужны эти транзисторы? Тем, кто будет управлять миром
В будущем останется две профессии: программист и массажист для его утомленной шеи. Если у вас сильные руки и хорошая выносливость, пролистывайте. Если нет — вот билет в профессию будущего.
Попробовать
Двоичный сумматор / вычитатель
Схема, которую можно использовать для сложения или вычитания двух двоичных чисел в любое время, называется двоичным сумматором / вычитателем . И двоичный сумматор, и двоичный вычитатель содержат набор полных сумматоров, которые каскадируются. Входные биты двоичного числа A непосредственно применяются как в двоичном сумматоре, так и в двоичном вычитателе.
Есть два различия в входах полных сумматоров, которые присутствуют в двоичном сумматоре и двоичном вычитателе.
-
Входные биты двоичного числа B непосредственно применяются к полным сумматорам в двоичном сумматоре, тогда как дополненные биты двоичного числа B применяются к полным сумматорам в двоичном вычитателе.
-
Первоначальный перенос, C = 0, применяется в 4-разрядном двоичном сумматоре, тогда как начальный перенос (C 0) 1 применяется в 4-разрядном двоичном вычитателе.
Входные биты двоичного числа B непосредственно применяются к полным сумматорам в двоичном сумматоре, тогда как дополненные биты двоичного числа B применяются к полным сумматорам в двоичном вычитателе.
Первоначальный перенос, C = 0, применяется в 4-разрядном двоичном сумматоре, тогда как начальный перенос (C 0) 1 применяется в 4-разрядном двоичном вычитателе.
Мы знаем, что вентиль Ex-OR с 2 входами производит выход, который совпадает с выходом первого входа, когда другой вход равен нулю. Точно так же это производит вывод, который является дополнением первого ввода, когда другой ввод — один.
Поэтому мы можем применить входные биты двоичного числа B к 2-входным вентилям Ex-OR. Другим входом для всех этих ворот Ex-OR является C . Таким образом, исходя из значения C , вентили Ex-OR создают либо нормальные, либо дополненные биты двоичного числа B.
4-разрядный двоичный сумматор / вычитатель
4-разрядный двоичный сумматор / вычитатель производит либо сложение, либо вычитание двух 4-разрядных чисел на основе значения начального переноса или заимствования, ? . Пусть 4-битные двоичные числа, A=A3A2A1A и B=B3B2B1B. Работа 4-разрядного двоичного сумматора / вычитателя аналогична работе 4-разрядного двоичного сумматора и 4-разрядного двоичного сумматора.
Примените обычные биты двоичных чисел A и B и начальный перенос или заимствование, C от внешнего к 4-битному двоичному сумматору. Блок-схема 4-битного двоичного сумматора / вычитателя показана на следующем рисунке.
Если начальный перенос, ? равен нулю, то каждый полный сумматор получает нормальные биты двоичных чисел A & B. Таким образом, 4-разрядный двоичный сумматор / вычитатель выдает выход, который является сложением двух двоичных чисел A & B.
Если начальный заем равен , то каждый полный сумматор получает нормальные биты двоичного числа A и дополненные биты двоичного числа B. Таким образом, 4-битный двоичный сумматор / вычитатель выдает результат, который является вычитанием двух двоичных номера A и B.
Следовательно, с помощью дополнительных шлюзов Ex-OR одна и та же схема может использоваться как для сложения, так и для вычитания двух двоичных чисел.
Направления развития сумматоров
Быстродействия параллельных сумматоров вполне достаточно для быстрого сложения небольшого количества чисел фиксированной длины.
Так как поразрядное сложение по природе своей последовательно, то при очень большом количестве сложений более выгодно перенастроить то же самое оборудование (АЛУ) для одновременного или не очень одновременного параллельного выполнения нескольких последовательных сложений.
Например, параллельный 64-х разрядный двоичный сумматор из 64-х двоичных сумматоров со сложными схемами ускоренного переноса сложит 1 пару 64-х битных чисел в лучших схемах приблизительно за 5dt, а 32 пары 64-х битных чисел приблизительно за 32*5dt=160dt.
32 последовательных двоичных сумматора без схем ускоренного переноса бит за битом сложат 32 пары 64-х битных чисел приблизительно за 64*2dt=128dt.
32 последовательных четверичных сумматора без схем ускоренного переноса сложат 32 пары 64-х битных чисел приблизительно за (64/lg24)*2dt=64dt.
32 последовательных шестнадцатиричных сумматора без схем ускоренного переноса сложат 32 пары 64-х битных чисел приблизительно за (64/lg216)*2dt=32dt.
32 последовательных двухсотпятидесятишестиричных сумматора без схем ускоренного переноса сложат 32 пары 64-х битных чисел приблизительно за (64/lg2256)*2dt=16dt, т.е. приблизительно в десять раз быстрее, чем параллельный 64-х битный сумматор со схемами ускоренного переноса.
32 последовательных четыретысячидевяностошестиричных сумматора без схем ускоренного переноса сложат 32 пары 64-х битных чисел приблизительно за (64/lg24096)*2dt=10,67dt.
Классификация сумматоров
В зависимости от формы представления информации различают сумматоры аналоговые и цифровые.
По способу реализации
- механические.
- электромеханические.
- электронные.
- пневматические.
По принципу действия
- На счётчиках, считающие количества импульсов входного сигналах.
- Функциональные, выдающие на выходах значения логической функции суммы по модулю и логической функции разряда переноса:
- логические, каждый раз вычисляющие функцию разряда суммы по модулю и функцию разряда переноса
- табличные, с таблицами заранее вычисленных значений функции разряда суммы по модулю и значений функции разряда переноса записанных:
- в ПЗУ, ППЗУ (аппаратные) (надёжнее и дешевле логических, так как вместо полупроводников, выполняющих логические вычисления, в ПЗУ используются проводники и изоляторы («прошивки»)) или
- в ОЗУ (аппаратные и программные).
Табличные сумматоры впервые были применены в калькуляторах построенных на реле в США до второй мировой войны.
По архитектуре
- Четвертьсумматоры — бинарные (двухоперандные) сумматоры по модулю без разряда переноса, характеризующиеся наличием двух входов, на которые подаются два одноразрядных числа, и одним выходом, на котором реализуется их арифметическая сумма по модулю.
- Полусумматоры — бинарные (двухоперандные) сумматоры по модулю с разрядом переноса, характеризующиеся наличием двух входов, на которые подаются одноимённые разряды двух чисел, и двух выходов: на одном реализуется арифметическая сумма по модулю в данном разряде, а на другом — перенос в следующий (старший) разряд.
- Полные сумматоры — тринарные (трёхоперандные) сумматоры по модулю с разрядом переноса, характеризующиеся наличием трёх входов, на которые подаются одноимённые разряды двух складываемых чисел и перенос из предыдущего (более младшего) разряда, и двумя выходами: на одном реализуется арифметическая сумма по модулю в данном разряде, а на другом — перенос в следующий (более старший разряд). Такие сумматоры изначально ориентированы только на показательные позиционные системы счисления[источник не указан 2874 дня].
- Накапливающие сумматоры — снабжённые собственной внутренней памятью.
По способу действия
- Последовательные (одноразрядные), в которых обработка разрядов чисел ведётся поочерёдно, разряд за разрядом, на одном и том же одноразрядном оборудовании.
- Параллельнопоследовательные, в которых одновременно параллельно последовательно складываются разряды нескольких пар чисел.
- Параллельные (многоразрядные), в которых слагаемые складываются одновременно по всем разрядам, и для каждого разряда имеется своё оборудование.
По способу организации переноса
- С (Ripple-carry adder, Схема последовательного переноса).
- С ускоренным групповым переносом (с предвидением переноса) (, CLA-adders).
- С пропуском переноса (Carry-skip adder).
- Сумматор с условным сложением (Conditional sum adder).
- С переключением переноса (с выбором переноса) (Carry-select adder).
- С сохранением переноса (Carry-save adder).
- Двоичные
- Троичные
- Четверичные
- Восьмеричные
- Десятеричные (десятичные)
- Шестнадцатеричные
- Тридцатидвухричные
- Шестидесятичетырёхричные
- Стодвадцативосмиричные
- Двухсотпятидесятишестиричные
- Шестьдесятпятьтысячпятьсоттридцатишестиричные
Как работает сумматор на ОУ на примере
Симуляция работы инвертирующего сумматора
Давайте рассмотрим работу нашего сумматора на ОУ в симуляторе Proteus.
На вход такого сумматора будет подавать синусоидальные сигналы с амплитудой в 1 В, но с разной частотой. На in1 у нас будет сигнал с частотой в 50 Гц, на in2 сигнал с частотой в 100 Гц и на in3 сигнал с частотой в 150 Гц. Как вы видите, все 3 резистора после сигналов имеют одинаковый номинал в 1 кОм для удобства расчета коэффициента усиления. То есть все сигналы будут усиливаться одинаково. Резистор R2 имеем номинал в 2 кОм. Это значит, что коэффициент усиления на выходе будет равен 2. То есть сумма сигналов будет помножена на коэффициент 2 и инвертирована.
Итак, для того, чтобы посмотреть сигналы как на экране осциллографа, можно также воспользоваться инструментом аналоговым анализатором
на рабочем поле появится окно Analogue Analysis
Для того, чтобы анализировать входы, просто переносим в наше окошко входы in1, in2, in3 и выход out, удерживая левую кнопку мыши
В результате увидим это
Разворачиваем окно
Потом нажимаем пробел и в большом окне уже видим все наши сигналы: и входные, и выходной. (нажмите на картинку, откроется в новом окне)
черная осциллограмма – это и есть сумма всех трех синусоид усиленная в 2 раза, но со знаком “минус”.
В чистом виде на выходе ОУ у нас будет только черная осциллограмма. Она является суммой всех входных сигналов, помноженная на 2, но со знаком “минус”.
Работа неинвертирующего сумматора
Итак, давайте соберем простой нормальный сумматор для, который бы просто складывал сигналы и на выходе выдавал нормальный неинвертированный сигнал. Для того, чтобы создать такой сумматор, наш коэффициент усиления должен быть равен единице, а на выходе мы должны инвертировать такой сигнал. Настало время использовать схему для неинвертирующего сумматора
Итак, все что мы хотим – это просто сложить три сигнала и посмотреть их сумму. И все! Не надо ничего усиливать и инвертировать. Поэтому, наша схема будет выглядеть вот так:
В этой схеме первый каскад на ОУ суммирует входные сигналы, а второй каскад просто инвертирует получившийся сигнал. В каждом усилителе коэффициент передачи равен 1, поэтому, никакого усиления сигнала в данной схеме не происходит.
Итак, осциллограмма со всеми сигналами
Если оставить на экране только осциллограмму выходного сигнала
Тот же самый эффект мы можем получить и с помощью схемы на одном ОУ, о которой я упоминал выше:
Давайте на его входы подадим два одинаковых синусоидальных сигнала, но в противофазе. То есть мы должны получить что-то типа этого
Проверяем симуляцию и видим, что сумма двух одинаковых сигналов в противофазе действительно равняется нулю
История
Подробнее по этой теме см. История компьютера.
См. также: История АВМ
- 1623 год и 1624 год — Вильгельм Шиккард в двух письмах Кеплеру описывает считающие часы, в которых одной из трёх главных частей был механический десятичный 6-ти разрядный сумматор.
- 1645 год — Паскаль создал механическую суммирующую машину «Паскалину» с механическим десятичным сумматором.
- 1673 год — Лейбниц создал механический калькулятор, в котором был механический цифровой десятичный сумматор на механическом счётчике.
- 1938 год — в телефонной компании Bell Laboratories создали первый электронный двоичный сумматор, автором идеи был Джордж Штибиц.
Схема на миллион
Типичная цифровая схема состоит из входов, выходов и логических элементов, также называемых вентилями. Сигналы поступают на входы схемы, преобразуются по определенным правилам внутри вентилей (об этом чуть ниже) и подаются на выходы.
В комбинационных схемах состояние сигналов на выходе зависит только от состояния на входе. В последовательностных схемах выход зависит не только от входа, но еще и от внутреннего состояния схемы
В любом случае важно понимать, что сигналы на выходе зависят от входа, не наоборот
В этой статье мы будем рассматривать только комбинационные схемы. Они проще для понимания и наглядней. Кстати, в отечественной литературе нет устоявшегося перевода для последовательностных схем. Кто-то называет их последовательными, кто-то предпочитает кальку с английского языка и использует термин «секвенциальные схемы» (sequential). Разницы нет никакой, но все равно учти это, когда будешь читать дополнительные источники.
Полусумматор
Теперь не будем обращать внимание на перенос из предыдущего разряда и рассмотрим только, как формируется сумма текущего разряда. Если были даны две единицы или два нуля, то сумма текущего разряда равна 0
Если одно из двух слагаемых равно единице, то сумма равна единице. Получить такие результаты можно при использовании вентиля ИСКЛЮЧАЮЩЕГО ИЛИ.
Перенос единицы в следующий разряд происходит, если два слагаемых равны единице. И это реализуемо вентилем И.
Тогда сложение в пределах одного разряда (без учета возможной пришедшей единицы из младшего разряда) можно реализовать изображенной ниже схемой, которая называется полусумматором. У полусумматора два входа (для слагаемых) и два выхода (для суммы и переноса). На схеме изображен полусумматор, состоящий из вентилей ИСКЛЮЧАЮЩЕЕ ИЛИ и И.
Сумматор на ОУ
Инвертирующий сумматор
Как мы уже говорили еще в начале статьи: сумматор – это схема, которая суммирует два и более сигналов. Базовая схема сумматора на ОУ выглядит вот так:
Как и у инвертирующего усилителя, в схеме есть одна особенность. В точке E, где соединяются резисторы, находится потенциал виртуальной земли, о котором мы говорили еще в прошлой статье. Еще эту точку называют точкой суммирования сигналов.
Поэтому, сколько бы мы входных сигналов не подавали на такой сумматор, они не будут влиять друг на друга.
Не будем здесь делать сложные математические выкладки, а просто предоставим вам готовую формулу расчета выходного напряжения Uвых .
Как не трудно догадаться, для сложения двух сигналов
Формула примет вот такой вид:
Откуда в формуле знак “минус”? Так как эта схема сумматора построена на схеме инвертирующего усилителя, то на выходе будет сигнал со знаком “минус”.
Как можно просто сложить два сигнала без всякого усиления?
Как вы заметили, выходное напряжение будет со знаком “минус”. Добавив после такого сумматора инвертирующий усилитель на ОУ с R3 = R4 , можно добиться того, что у нас на выходе сигнал будет без знака “минус”. То есть мы получим неинвертирующий сумматор.
Неинвертирующий сумматор
Базовая схема будет выглядеть вот так:
Формулы для расчета
Поэтому, сумматор для двух сигналов будет выглядеть вот так:
Если взять R5 = R2 = R3, то у нас будет простой сумматор с единичным коэффициентом усиления, который на выходе даст просто сумму двух входных сигналов.
где
Причем должно выполняться условие:
то есть в нашем случае отношение этих резисторов должно равняться 2.
Определение слова «Сумматор» по БСЭ:
Сумматор (от позднелат. surnmo — складываю, от лат. summa — сумма, итог)основной узел арифметического устройства ЦВМ, посредством которого осуществляется операция сложения чисел. При поразрядном сложении десятичных чисел (например, 157, 68 и 9) складывают сначала цифры разрядов единиц всех слагаемых (7 + 8 + 9). результат, если это однозначное число, записывают в разряд единиц итоговой суммы, если же результат — двузначное число (как в данном примере, 7 + 8 + 9 = 24), то в итог записывают только единицы (4), а десятки (2) переносят (добавляют) в разряд десятков слагаемых (5 + 6 + 2). Затем операция сложения повторяется, но уже над десятками, после этого — над сотнями и т. д., до получения итоговой суммы (234). При поразрядном сложении чисел, представленных в двоичном коде, также складываются цифры слагаемых в данном разряде и к полученному результату прибавляется единица переноса (если она имеется) из младшего разряда. В результате формируются (по правилам сложения в двоичной системе счисления) значения суммы в данном разряде и переноса в старший разряд.Многоразрядный С. для поразрядного сложения обычно состоит из соответствующим образом соединённых одноразрядных суммирующих устройств. Простейшее из них, часто называют полусумматором (ПС), в случае сложения двоичных чисел может быть собрано, например, из 4 логических элементов (рис. 1):«и» (2 элемента типа совпадений схемы), «или» (Вентиль электрический), «не» (Инвертор). Схема ПС может видоизменяться в зависимости от используемой системы логических элементов. ПС производит суммирование двух чисел x и y с образованием цифр суммы S и переноса c (см. табл. 1). Однако для реализации многоразрядных С. необходимо иметь суммирующее устройство на 3 входа (для суммирования трёх чисел — слагаемых xi и yi и переноса Ci-1 из младшего разряда), на выходах которого образуется сумма Si и перенос Ci+1 в старший разряд. Работа такого С. отражена в табл. 2, а пример схемы дан на рис. 2.
x | y | S | c |
1 | 1 | ||
1 | 1 | ||
1 | 1 | 1 |
xi | yi | ci-1 | Si | ci+1 |
1 | 1 | |||
1 | 1 | |||
1 | 1 | 1 | ||
1 | 1 | |||
1 | 1 | 1 | ||
1 | 1 | 1 | ||
1 | 1 | 1 | 1 | 1 |
обработкиВыборсистемабыстродействияэкономичностиБыстродействиеПоэтомупоколенияускорениясразубольшинствоумноженияделения,КарцевАрифметикаКаганКаневскийвычислительныемашиныПреснухинНестеровiii-1ii+1
технические науки
- , кандидат наук, доцент, преподаватель
- , магистр, студент
- Волгоградский государственный технический университет, Волжский политехнический институт (филиал)
- СУММАТОР
- СЛОЖЕНИЕ
- ПОЛУСУММАТОР
- АРИФМЕТИКО-ЛОГИЧЕСКОЕ УСТРОЙСТВО
Основной элементарной операцией, которую можно выполнять с числами в цифровых устройствах — это арифметическое сложение двух одноразрядных двоичных чисел. АЛУ — Арифметико-логическое устройство процессора, будет обязательно содержать в составе своём такие элементы как сумматоры. Такие схемы позволят, к примеру, складывать двоичные числа. Но помимо сложения они обладают есть еще множеством функций.
Базовые блоки
Все цифровые схемы сводятся к нескольким стандартным логическим элементам. Это примерно как кубики Lego в детском конструкторе. Их можно комбинировать, соединять друг с другом и получать новые схемы. Для каждого элемента я привел таблицу истинности — соответствие между входными и выходными сигналами.
Существуют еще диаграммы Венна, но, на мой взгляд, они совершенно лишние и только осложняют дело. Впрочем, если ты предпочитаешь графическое представление, то можешь ознакомиться и с ними.
NOT
Самый простой вентиль, представляет собой логическое отрицание и инвертирует сигнал на единственном входе. Так как у нас всего два возможных состояния, таблица истинности совсем крохотная. В С/C++ это оператор , хотя там его действие распространяется на любые переменные с числовым значением, не только бинарные.
Обрати внимание, что на рисунке выше (и на всех последующих) приведены два символа для обозначения конкретного элемента на схемах. Слева — американский вариант (ANSI), справа — его европейский аналог (МЭК и ГОСТ)
Второй стандарт сейчас уже редко где применяется, и даже в русскоязычной литературе почти всегда используется графически более наглядный стандарт ANSI.
AND
Сигнал на выходе этого вентиля равен логической единице только тогда, когда на всех входах присутствует высокий уровень. При этом количество входов может быть любым — таблица истинности изменится незначительно. Кроме того, ничто не мешает каскадировать такие элементы, подавая выход одного вентиля на вход другого.
Традиционно таблица рисуется именно таким образом: сперва все входы находятся в состоянии логического ноля, а затем последовательно инвертируется один из разрядов, начиная с младшего. Можно смотреть на это и с другой стороны — как будто все входы кодируют какое-то число (в двоичном представлении) и в каждой строке мы прибавляем к нему по единичке, проходя все возможные значения.
В С/С++ существует аж два аналога для этого вентиля: булево И (оператор &) и логическое И (оператор &&). Первый применяется для проверки флагов и других операций над отдельными битами числа, тогда как второй используется в логических выражениях.
OR
Здесь выход находится в состоянии логического ноля, только когда все входы равны нулю. Остальные комбинации приводят к высокому уровню на выходе.
Вместе и — это два основных строительных «кирпичика» цифровой логики. Сразу возникает вопрос, как их отличать друг от друга на схемах. Конечно, все решает практика, и со временем они запомнятся сами собой, но можно воспользоваться простым правилом: форма элемента со стороны входов соответствует первой букве в английском обозначении.
Так, округлость вентиля напоминает очертания буквы O, а прямая линия элемента явно позаимствована из буквы А. Звучит немного нелепо, но главное, что это работает.
Аналогично ситуации с для вентиля в языках программирования С/С++ используется булево ИЛИ (оператор ) и логическое ИЛИ (оператор ).
XOR
Наконец, последний из базовых элементов в нашем списке — функция исключающего ИЛИ (). На первый взгляд его таблица истинности выглядит странной, но легко запоминается — высокий уровень на выходе, только когда входы отличаются друг от друга. Однако не все так просто.
В общем случае (больше двух входов) этот вентиль реализует самую неочевидную функцию из рассмотренных: если на входах нет логических единиц или если их количество четное, то на выходе ноль, в любом другом случае — единица.
В C/C++ это оператор и с ним связана забавная возможность обменять значения двух числовых переменных без участия временной переменной для промежуточного хранения (свойство самообратимости). И все в одной строчке:
Но вернемся к нашим вентилям. Иногда в их список добавляют также сочетания с : , и . При желании можешь вывести их таблицы истинности самостоятельно, это не составляет никакого труда.
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»