- Побитовият XOR оператор е известен също като Изключително ИЛИ
- Означава се с помощта на '^'
- Както показва името, той работи на битово ниво на операндите.
- Побитовият XOR оператор попада в категорията на побитовите оператори.
- В побитово изключителния оператор ИЛИ (XOR) са необходими два операнда и тези два операнда са разделени от символа XOR, т.е. '^'.
- За да определим изхода или резултата, който излиза след прилагане на оператора XOR върху два операнда, трябва да следваме таблицата на логическата истина на оператора XOR.
- XOR Truth Table е математическата таблица, конструирана с помощта на правилната логика на оператора XOR.
- Логиката, използвана зад оператора XOR е; всеки път, когато операцията XOR се прилага към двете различен битове от два операнда, тогава резултатът винаги ще се получава '1', и ако операцията XOR се приложи върху двете един и същ битове от два операнда, тогава резултатът произвежда изход '0'.
Таблица на истинността на оператора Изключително ИЛИ (XOR).
Нека има два операнда; първият е A, а вторият е B, общите комбинации от входни данни, образувани от тези два операнда, ще бъдат 4. Като използваме следната XOR таблица на истината, ще определим съответния изход. Резултатът ще бъде записан в C тук C = A ^ B.
В тази таблица на истината ние приемаме входни данни под формата на битове, т.е. 0 и 1, и изходът също ще бъде генериран под формата на битове, т.е. 0 и 1.
Тук, в горната таблица на истината XOR, наблюдаваме, че когато стойностите на операндите A и B са различни, т.е. (0, 1), (1, 0), резултатът, който излиза, винаги ще бъде 1. И когато стойностите на операндите A и B са еднакви, т.е. (0, 0), (1, 1), резултатът, който излиза, винаги ще бъде 0.
По същия начин, по този начин можем да начертаем таблицата на истината за Булева стойност стойности -
Нека има два операнда; първият е А а вторият е б . Общите комбинации от входни данни, образувани от тези два операнда, ще бъдат 4. Като използваме следната XOR таблица на истината, ще определим съответния изход. Резултатът ще бъде записан в C, тук C = A ^ B.
В тази таблица на истината ние приемаме входни данни под формата на стойности Truth, т.е. True (T) и False (F). Резултатът също ще бъде генериран под формата на истински стойности, т.е. T и F.
Тук, в горната таблица на истината XOR, наблюдаваме, че когато стойностите на операндите A и B са различни, т.е. (F, T), (T, F), резултатът винаги ще бъде T. И когато стойностите на операндите A и B са еднакви, т.е. (F, F), (T, T), резултатът винаги ще бъде F.
От горните таблици виждаме това T (True) се обозначава с единица, а F (False) се обозначава с 0.
Стъпки за решаване на даден проблем -
- Операндите, дадени в задачата, винаги ще бъдат в десетична стойност.
- Първо, трябва да преобразуваме стойностите на операндите в двоичен
- След като преобразувате стойностите на операндите в двоични числа, поставете двата операнда един върху друг.
- Не забравяйте, че преди да приложите изключителна операция ИЛИ (XOR) върху тях, любезно проверете брой цифри в тях.
- Ако броят на цифрите не съвпада, допълнителните 0 в левия край на малкия операнд балансират броя на цифрите.
- Накрая, с помощта на горната таблица на истината, приложете операцията XOR върху операндите един по един, като вземете бит по бит за прилагане на операцията XOR.
- Накрая резултатът се произвежда под формата на изход.
- Полученият резултат ще бъде в двоична форма, сега преобразувайте двоичната форма в десетична форма и запишете стойността на резултата.
Изпълнение на побитово изключително ИЛИ (XOR) операция в C++
Нека разберем по-подробно за изпълнението на операцията XOR в C++ с помощта на примери -
Пример 1: Намерете изключителното ИЛИ на цели числа; 10 и 14. Освен това го обяснете и напишете кода за изпълнение на C++.
Решение: Нека разгледаме две променливи, 'a' и 'b', за да съхраним съответните два операнда, дадени в горния въпрос, т.е. 10 и 14.
Тук a = 10 и b = 14.
набор срещу карта
Ще следваме стъпките по-долу, за да открием изключителното ИЛИ на дадените два операнда.
- Знаем, че 10 и 14 са в десетична форма и за прилагане на побитова операция XOR е необходимо да се преобразува в двоична форма.
- Двоична форма 'a', т.е. 10 е '1010' и двоична форма на 'b', т.е. 14 е „1110“.
- Тук наблюдаваме, че броят на двоичните цифри в a е четири и броят на двоичните цифри в b също е 4; следователно броят на двоичните цифри, присъстващи в двете променливи, е еднакъв и вече балансиран, не е необходимо да добавяме повече нули, за да го балансираме.
- Сега поставяме двоичните цифри, присъстващи в 'b', до двоичните цифри, присъстващи в 'a'.
- И накрая, прилагането на операцията XOR един по един върху съответните битове съвпада и запишете изхода.
- Генерираният най-накрая резултат ще бъде в двоична форма, тъй като горният въпрос е даден в десетична форма, така че трябва да преобразуваме резултата в десетична форма.
Обяснение:
a = 10 (в десетична форма)
b = 14 (в десетична форма)
Сега, за XOR b, трябва да преобразуваме a и b в двоична форма -
a = 1010 (в двоична форма)
b = 1110 (в двоична форма)
Сега, прилагайки операция XOR върху a и b -
а = 1010
b = 1110
---------------
a ^ b = 0100 (В двоична форма)
Резултатът от a ^ b е 0100, което е в двоична форма.
Сега преобразувайте резултата в десетична форма, която е 4.
10^14 = 4
ЗАБЕЛЕЖКА: С помощта на горната таблица на истината XOR се генерират изходни данни от съответните битове.
Сега ще приложим побитовата операция XOR върху 10 и 14 на езика C++ и ще получим резултата, т.е. 4.
C++ код за горния пример:
//************************ C++ Code ****************************** #include using namespace std; int main () { int a, b, c ; // Initializing integer variables to store data values cout <' << endl ; cout <> a ; // taking a as input from user cout <> b ; // taking b as input from user c = a ^ b ; // storing XOR result of a and b in c cout << 'Applying XOR operation on a and b: '<< endl ; cout << 'a ^ b = ' << c << endl ; // Printing the output } </'>
Изход
Пример 2: Намерете изключителното ИЛИ на целочислени стойности; 3 и 15. Освен това го обяснете и напишете кода за изпълнение на C++.
Решение: Нека разгледаме две променливи, 'a' и 'b', за да съхраним съответните два операнда, дадени в горния въпрос, т.е. 3 и 15.
Тук a = 3 и b = 15.
Ще следваме стъпките по-долу, за да открием изключителното ИЛИ на дадените два операнда.
- Знаем, че 3 и 15 са в десетична форма и за прилагане на побитова операция XOR е необходимо да се преобразува в двоична форма.
- Двоичната форма 'a', т.е. 3 е 'единадесет' и двоична форма на 'b', т.е. 15 е „1111“.
- Тук ще забележим, че броят на двоичните цифри в a е две, а броят на двоичните цифри в b е четири; следователно броят на двоичните цифри, присъстващи в двете променливи, не е еднакъв. По този начин, небалансирани, трябва да добавим повече нули от лявата страна на долното двоично число, т.е. a, което е ' единадесет' , за да го балансирате.
- След балансиране стойността на a е '0011' , и b е „1111“.
- Сега поставяме двоичните цифри, присъстващи в 'b', до двоичните цифри, присъстващи в 'a'.
- И накрая, прилагането на операцията XOR един по един върху съответните битове съвпада и запишете изхода.
- Генерираният най-накрая резултат ще бъде в двоична форма, тъй като горният въпрос е даден в десетична форма, така че трябва да преобразуваме резултата в десетична форма.
Обяснение:
a = 3 (в десетична форма)
b = 15 (в десетична форма)
Сега, за XOR b, трябва да преобразуваме a и b в двоична форма -
a = 0011 (в двоична форма)
b = 1111 (в двоична форма)
Сега, прилагайки операция XOR върху a и b -
а = 0011
b = 1111
---------------
a ^ b = 1100 (В двоична форма)
Резултатът от a ^ b е 1100, което е в двоична форма.
Сега преобразувайте резултата в десетична форма, която е 12.
3^15 = 12
ЗАБЕЛЕЖКА: С помощта на горната таблица на истината XOR се генерират изходни данни от съответните битове.
Сега ще приложим побитовата операция XOR върху 3 и 15 на езика C++ и ще получим резултата, т.е. 12.
C++ код за горния пример:
//************************ C++ Code ****************************** #include using namespace std; int main () { int a, b, c ; // Initializing integer variables to store data values cout <' << endl ; cout <> a ; // taking a as input from user cout <> b ; // taking b as input from user c = a ^ b ; // storing XOR result of a and b in c cout << 'Applying XOR operation on a and b: '<< endl ; cout << 'a ^ b = ' << c << endl ; // Printing the output } </'>
Изход