Operadores lógicos: qué son, tipos y ejemplos en programación

En este artículo
  1. Los cuatro operadores fundamentales
  2. Los operadores condicionales
  3. Orden de precedencia
  4. Operadores lógicos en programación
  5. Diferencia con los operadores a nivel de bits
  6. Las leyes que te ahorran código
  7. Los operadores lógicos en el hardware
  8. Ejercicios resueltos
  9. Preguntas frecuentes

Los operadores lógicos son símbolos que combinan valores de verdad para producir un nuevo valor de verdad. Trabajan solo con dos posibilidades —verdadero o falso— y su resultado también es verdadero o falso.

Aparecen en dos sitios que a primera vista parecen distintos pero son el mismo: en la lógica matemática, donde se usan para analizar razonamientos, y en la programación, donde deciden si un bloque de código se ejecuta. Este artículo cubre los dos.

Los cuatro operadores fundamentales

Negación — NOT (¬, !)

Invierte el valor. Es el único que actúa sobre un solo valor, por eso se le llama unario.

p¬p
VerdaderoFalso
FalsoVerdadero

En lógica: ¬p · En código: !p en la mayoría de lenguajes, not p en Python.

Conjunción — AND (∧, &&)

Regla: verdadero solo si ambos operandos son verdaderos. Basta que uno falle para que el resultado sea falso.

pqp ∧ q
VVV
VFF
FVF
FFF

Piénsalo como una condición doble: "tener carné y tener coche". Si te falta cualquiera de las dos, no conduces.

Disyunción — OR (∨, ||)

Regla: verdadero si al menos uno es verdadero. Solo es falso cuando los dos lo son.

pqp ∨ q
VVV
VFV
FVV
FFF

Cuidado aquí: el OR lógico es inclusivo. Que se cumplan las dos condiciones también da verdadero. En el habla cotidiana solemos usar "o" en sentido excluyente ("o café o té"), y esa diferencia es el error más común al empezar.

Disyunción exclusiva — XOR (⊕, ^)

Regla: verdadero cuando los valores son distintos. Uno sí, el otro no.

pqp ⊕ q
VVF
VFV
FVV
FFF

Los operadores condicionales

Se usan sobre todo en lógica formal y matemática discreta, no tanto en programación directa.

Condicional — implicación (→)

Regla: solo es falso cuando el antecedente es verdadero y el consecuente falso.

pqp → q
VVV
VFF
FVV
FFV

Las dos últimas filas siempre generan dudas. Míralo como una promesa: "si apruebas, te invito a cenar". Solo rompes la promesa si apruebas y no invitas. Si no apruebas, hagas lo que hagas no has mentido, porque no dijiste nada sobre ese caso.

Bicondicional — equivalencia (↔)

Regla: verdadero cuando ambos valores coinciden. Es lo contrario exacto del XOR.

Orden de precedencia

Cuando hay varios operadores en la misma expresión, se resuelven en este orden:

  1. Paréntesis
  2. Negación (¬, !)
  3. Conjunción (∧, &&)
  4. Disyunción (∨, ||)
  5. Condicional (→)
  6. Bicondicional (↔)

Es decir, a || b && c se evalúa como a || (b && c), porque AND tiene prioridad sobre OR. Es una fuente habitual de errores silenciosos: el código no falla, simplemente hace algo distinto a lo que pensabas. Usa paréntesis aunque no hagan falta: el rendimiento no cambia y la intención queda explícita.

Operadores lógicos en programación

OperaciónC, Java, JS, PHPPythonSQL
AND&&andAND
OR||orOR
NOT!notNOT
XOR^^—

Ejemplo de uso real:

if (edad >= 18 && tieneDocumento && !estaSancionado) {
    permitirEntrada();
}

Eso es p ∧ q ∧ ¬r. Las tablas de verdad no son teoría abstracta: son literalmente lo que ejecuta esa línea.

Evaluación de cortocircuito

Este comportamiento no aparece en los libros de lógica y en programación es fundamental.

Con &&, si el primer operando es falso, el resultado ya es falso pase lo que pase. El lenguaje no evalúa el segundo. Con || ocurre al revés: si el primero es verdadero, se salta el segundo.

if (usuario != null && usuario.nombre == "Ana") { ... }

Ese orden no es casual. Si usuario es nulo, la primera condición falla y la segunda ni se ejecuta, evitando el error de acceder a una propiedad de algo que no existe. Invirtiendo el orden, el programa se rompería.

El cortocircuito también sirve para escribir código compacto:

const nombre = usuario.nombre || "Invitado";
usuario.activo && enviarCorreo(usuario);

Diferencia con los operadores a nivel de bits

Aquí se confunde mucha gente. Los símbolos se parecen pero hacen cosas distintas:

LógicosDe bits
Símbolos&& || !& | ~ ^
Operan sobreValores de verdadCada bit del número
DevuelvenVerdadero o falsoUn número
CortocircuitoSíNo

Un ejemplo aclara la diferencia: 5 && 3 devuelve verdadero, porque ambos son valores distintos de cero. Pero 5 & 3 devuelve 1, porque compara bit a bit: 101 y 011 comparten un único bit en la posición final.

Las leyes que te ahorran código

Leyes de De Morgan — las más útiles en el día a día:

  • ¬(p ∧ q) ≡ ¬p ∨ ¬q
  • ¬(p ∨ q) ≡ ¬p ∧ ¬q

En código, !(a && b) equivale a !a || !b. Sirve para desenredar condiciones ilegibles:

// difícil de leer
if (!(usuario.activo && usuario.verificado)) { bloquear(); }

// más claro
if (!usuario.activo || !usuario.verificado) { bloquear(); }

Otras equivalencias útiles:

  • Doble negación: ¬(¬p) ≡ p
  • Idempotencia: p ∧ p ≡ p  ·  p ∨ p ≡ p
  • Absorción: p ∨ (p ∧ q) ≡ p
  • Condicional como disyunción: p → q ≡ ¬p ∨ q
  • Distributiva: p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r)

Los operadores lógicos en el hardware

Dentro de un procesador, estos operadores existen físicamente como puertas lógicas: circuitos que reciben señales eléctricas de entrada y producen una de salida siguiendo exactamente las tablas de arriba.

Con las puertas AND, OR y NOT se construyen sumadores, comparadores y memorias, y con esos bloques se construye un procesador completo. La cadena va de estas cuatro reglas hasta cualquier programa que uses.

Ejercicios resueltos

1. ¿Cuál es el resultado de true && false || true?
AND tiene prioridad: (true && false) || true = false || true = true.

2. Simplifica !(a || b).
Por De Morgan: !a && !b.

3. ¿Qué imprime console.log(0 || "hola")?
"hola". El 0 se considera falso, así que el OR devuelve el segundo valor.

4. ¿Es tautología p ∨ ¬p?
Sí. Si p es verdadero, el primero se cumple; si es falso, el segundo. Siempre verdadero.

Preguntas frecuentes

¿Cuántos operadores lógicos hay?
Los básicos son cuatro: NOT, AND, OR y XOR. En lógica formal se añaden el condicional y el bicondicional, que se pueden expresar con los anteriores.

¿Qué diferencia hay entre & y &&?
&& es lógico y aplica cortocircuito. & es de bits y siempre evalúa ambos lados.

¿El orden de las condiciones importa?
Sí, por el cortocircuito. Pon primero la comprobación que evita errores y la que sea más rápida de evaluar.

¿Se pueden combinar más de dos condiciones?
Sí, sin límite. Pero si necesitas más de tres o cuatro, suele ser mejor extraerlas a una función con nombre descriptivo.


¿Estudias programación? En nuestro catálogo de cursos técnicos tienes formación desde cero, con acceso inmediato y de por vida.