Operadores lógicos: qué son, tipos y ejemplos en programación
En este artículo
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 |
|---|---|
| Verdadero | Falso |
| Falso | Verdadero |
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.
| p | q | p ∧ q |
|---|---|---|
| V | V | V |
| V | F | F |
| F | V | F |
| F | F | F |
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.
| p | q | p ∨ q |
|---|---|---|
| V | V | V |
| V | F | V |
| F | V | V |
| F | F | F |
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.
| p | q | p ⊕ q |
|---|---|---|
| V | V | F |
| V | F | V |
| F | V | V |
| F | F | F |
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.
| p | q | p → q |
|---|---|---|
| V | V | V |
| V | F | F |
| F | V | V |
| F | F | V |
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:
- Paréntesis
- Negación (¬, !)
- Conjunción (∧, &&)
- Disyunción (∨, ||)
- Condicional (→)
- 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ón | C, Java, JS, PHP | Python | SQL |
|---|---|---|---|
| AND | && | and | AND |
| OR | || | or | OR |
| NOT | ! | not | NOT |
| 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ógicos | De bits | |
|---|---|---|
| Símbolos | && || ! | & | ~ ^ |
| Operan sobre | Valores de verdad | Cada bit del número |
| Devuelven | Verdadero o falso | Un número |
| Cortocircuito | Sí | 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.