XOR lógico en C++

Suraj P 12 octubre 2023
  1. XOR lógico en C++
  2. Usar XOR lógico con operandos booleanos en C++
  3. Usar XOR lógico con operandos no booleanos en C++
  4. Usar XOR lógico con expresiones complejas en C++
  5. Implemente el XOR lógico utilizando la operación mod 2 en C++
XOR lógico en C++

Aprenderemos en este tutorial cómo implementar XOR lógico en C++.

XOR lógico en C++

En C++, aunque tenemos OR lógico (||) y AND lógico (&&), no tenemos XOR lógico. Utilizando los operadores existentes, podemos imitar la funcionalidad de XOR lógico.

El operador lógico XOR no está presente en C++ porque es simplemente un operador equivalente, no igual a con valores booleanos.

Entonces, una sintaxis general sería: A y B son valores booleanos.

A logical XOR B is equivalent to A!=B

Si miramos la tabla de verdad de XOR, sabemos que XOR no es más que un verificador de desigualdad para valores booleanos. Así que podemos usar el operador no igual a (!=) para imitar el XOR lógico.

Usar XOR lógico con operandos booleanos en C++

#include <bits/stdc++.h>
using namespace std;

int main() {
  bool a = 0;
  bool b = 1;

  if (a != b) {
    cout << "Yes\n";
  }

  else
    cout << "NO\n";
}

Producción :

Yes

Usar XOR lógico con operandos no booleanos en C++

Aquí tenemos que hacer modificaciones. Como los valores no son booleanos, primero tenemos que convertirlos a booleanos y luego aplicar el operador no igual a (!=).

#include <bits/stdc++.h>
using namespace std;

int main() {
  int a = 10;
  int b = 20;

  if ((!a) != (!b)) {
    cout << "Yes\n";
  } else
    cout << "NO\n";
}

Producción :

NO

Nosotros usamos ! aquí para convertir los valores a booleanos y negarlos para que dos enteros positivos desiguales (true) se evalúen como false.

Usar XOR lógico con expresiones complejas en C++

Hemos entendido que primero necesitamos convertir los valores a booleanos y luego realizar la operación lógica XOR. Extendemos esta idea para realizar operaciones lógicas XOR para operaciones complejas.

#include <bits/stdc++.h>
using namespace std;

int main() {
  int a = 10;
  int b = 20;

  int x = 50;
  int y = 100;

  if (!(a < b) != !(x >= y)) {
    cout << "Yes\n";
  } else
    cout << "NO";
}

Podemos ver que (a<b) XOR lógico (x>=y) se escribe como !(a < b) != !(x >= y).

Producción :

Yes

Implemente el XOR lógico utilizando la operación mod 2 en C++

Otra forma de implementar el XOR lógico entre dos valores booleanos es mediante el uso de la operación de módulo 2. Un XOR B lógico se puede escribir como (A+B) % mod 2.

#include <bits/stdc++.h>
using namespace std;

bool XOR(bool x, bool y) { return (x + y) % 2; }

int main() {
  cout << "XOR(0, 0): " << XOR(0, 0) << endl;
  cout << "XOR(1, 0): " << XOR(1, 0) << endl;
}

Producción :

XOR(0, 0): 0
XOR(1, 0): 1
Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Artículo relacionado - C++ Operator