logo

C++ Побітовий оператор XOR

  • Побітовий оператор XOR також відомий як Виключне АБО
  • Його позначають за допомогою '^'
  • Як видно з назви, він працює на бітовий рівень операндів.
  • Побітовий оператор XOR відноситься до категорії побітових операторів.
  • У побітовому виключаючому операторі АБО (XOR) потрібні два операнди, і ці два операнди розділені символом XOR, тобто «^».
  • Щоб визначити вихід або результат, який виходить після застосування оператора XOR до двох операндів, нам потрібно слідувати таблиці логічної істинності оператора XOR.
  • Таблиця істинності XOR — це математична таблиця, побудована за допомогою відповідної логіки оператора XOR.
  • Логіка, яка використовується за оператором XOR: щоразу, коли операція XOR застосовується до двох інший бітів двох операндів, то результат буде видаватись завжди '1', і якщо операція XOR застосовується до двох те саме біти двох операндів, тоді результат дає вихід '0'.

Таблиця істинності оператора виняткового АБО (XOR).

Нехай є два операнди; Перший — A, а другий — B, загальна кількість вхідних даних, утворених цими двома операндами, становитиме 4. Використовуючи наступну таблицю істинності XOR, ми визначимо відповідний вихід. Результат буде записано на C тут C = A ^ B.

У цій таблиці істинності ми приймаємо вхідні дані у формі бітів, тобто 0 і 1, і вихідні дані також будуть згенеровані у формі бітів, тобто 0 і 1.

C++ Побітовий оператор XOR

Тут, у наведеній вище таблиці істинності 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.

C++ побітовий оператор XOR

Тут, у наведеній вище таблиці істинності XOR, ми спостерігаємо, що коли значення операндів A і B різні, тобто (F, T), (T, F), результатом завжди буде T. І коли значення операндів A і B однакові, тобто (F, F), (T, T), результатом завжди буде F.

З наведених вище таблиць ми це бачимо T ( True ) позначається одиницею, а F ( False ) позначається 0.

Кроки для вирішення будь-якої проблеми -

  1. Операнди, подані в задачі, завжди будуть мати десяткове значення.
  2. По-перше, нам потрібно перетворити значення операндів у двійковий
  3. Після перетворення значень операндів у двійкові числа помістіть обидва операнди один над одним.
  4. Пам’ятайте, що перед застосуванням до них операції ексклюзивного АБО (XOR), перевірте кількість цифр у них.
  5. Якщо кількість цифр не збігається, додаткові 0 у лівому кінці малого операнда врівноважують кількість цифр.
  6. Нарешті, за допомогою наведеної вище таблиці істинності застосуйте операнд XOR до операндів один за одним, беручи по одному біту для застосування операції XOR.
  7. Нарешті, результат виробляється у вигляді виходу.
  8. Вихідні дані будуть у двійковій формі, тепер перетворіть двійкову форму в десяткову та запишіть отримане значення.

Виконання операції побітового виключного АБО (XOR) у C++

Розберемося більш детально з виконанням операції XOR в C++ на прикладах -

Приклад 1: знайти виключне АБО цілих значень; 10 і 14. Крім того, поясніть це та напишіть код виконання на C++.

рішення: Розглянемо дві змінні, 'a' і 'b', щоб зберегти відповідні два операнди, наведені у запитанні вище, тобто 10 і 14.

Тут a = 10 і b = 14.

Ми виконаємо наведені нижче кроки, щоб знайти виключне АБО наведених двох операндів.

  1. Ми знаємо, що 10 і 14 мають десяткову форму, і для застосування порозрядної операції XOR необхідно перетворити її в двійкову форму.
  2. Двійкова форма 'a', тобто 10 є '1010' і двійкова форма 'b', тобто 14 є '1110'.
  3. Тут ми спостерігаємо, що кількість двійкових цифр у a дорівнює чотирьом, а кількість двійкових цифр у b також дорівнює 4; отже, кількість двійкових цифр, присутніх в обох змінних, є однаковою і вже збалансованою, нам не потрібно додавати ще кількість 0, щоб збалансувати це.
  4. Тепер помістимо двійкові цифри в «b» до двійкових цифр у «a».
  5. Нарешті, застосовуючи операцію XOR один за одним до відповідних бітів, які збігаються та записують результат.
  6. Нарешті згенерований результат буде у двійковій формі, оскільки запитання вище подано у десятковій формі, тому нам потрібно перетворити результат у десяткову форму.

Пояснення:

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 &lt;&gt; b ; // taking b as input from user c = a ^ b ; // storing XOR result of a and b in c cout &lt;&lt; &apos;Applying XOR operation on a and b: &apos;&lt;&lt; endl ; cout &lt;&lt; &apos;a ^ b = &apos; &lt;&lt; c &lt;&lt; endl ; // Printing the output } </'>

Вихід

C++ Побітовий оператор XOR

Приклад 2: знайти виключне АБО цілих значень; 3 і 15. Також поясніть це та напишіть код виконання на C++.

рішення: Розглянемо дві змінні, 'a' і 'b', щоб зберегти відповідні два операнди, наведені у запитанні вище, тобто 3 і 15.

Тут a = 3 і b = 15.

Ми виконаємо наведені нижче кроки, щоб знайти виключне АБО наведених двох операндів.

  1. Ми знаємо, що 3 і 15 знаходяться в десятковій формі, і для застосування порозрядної операції XOR необхідно перетворити її в двійкову форму.
  2. Двійкова форма 'a', тобто 3 є 'одинадцять' і двійкова форма 'b', тобто 15 є '1111'.
  3. Тут ми зауважимо, що кількість двійкових цифр у a дорівнює двом, а кількість двійкових цифр у b дорівнює чотирьом; отже кількість двійкових цифр, присутніх в обох змінних, неоднакова. Таким чином, якщо незбалансовано, нам потрібно додати більше нулів ліворуч від молодшого двійкового числа, тобто a, яке є ' одинадцять , щоб збалансувати його.
  4. Після балансування значення a дорівнює '0011' , і b є '1111'.
  5. Тепер помістимо двійкові цифри в 'b' до двійкових цифр в 'a'.
  6. Нарешті, застосовуючи операцію XOR один за одним до відповідних бітів, які збігаються та записують результат.
  7. Нарешті згенерований результат буде у двійковій формі, оскільки запитання вище подано у десятковій формі, тому нам потрібно перетворити результат у десяткову форму.

Пояснення:

підрядок методу java

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 &lt;&gt; b ; // taking b as input from user c = a ^ b ; // storing XOR result of a and b in c cout &lt;&lt; &apos;Applying XOR operation on a and b: &apos;&lt;&lt; endl ; cout &lt;&lt; &apos;a ^ b = &apos; &lt;&lt; c &lt;&lt; endl ; // Printing the output } </'>

Вихід

C++ Побітовий оператор XOR