¿Cuándo suena la alarma de la tienda?
Una tienda pequeña tiene una alarma. Suena si alguien abre la puerta o una ventana, pero solo cuando la alarma no está desconectada.
Una regla así se construye con piezas diminutas que reciben un sí o un no. El procesador de la centralita de la alarma tiene millones de ellas.
Al terminar esta lección
Nota
Puedo calcular la salida de un circuito lógico.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Puerta lógica | una pieza diminuta que convierte bits de entrada en un bit de salida | |
| Entrada | un bit que entra en una puerta | |
| Salida | el bit que devuelve una puerta | |
| Tabla de verdad | una tabla con cada entrada posible y su salida | |
| Expresión booleana | un circuito escrito con palabras como AND, OR y NOT | A OR B |
| Semisumador | un circuito que suma dos bits |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las puertas básicas
Un 1 significa sí, o encendido. Un 0 significa no, o apagado.
Una puerta AND da 1 solo cuando las dos entradas son 1. Una puerta OR da 1 cuando al menos una entrada es 1. Una puerta NOT tiene una sola entrada y la invierte. NAND es AND seguida de NOT, y NOR es OR seguida de NOT.
Tabla de verdad de AND y OR
| A | B | A AND B | A OR B |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra superior y espera a que la máquina diga que está en marcha. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno detrás de otro.
Python y la terminal tienen puertas
En Python y en la terminal, & es AND, | es OR y ^ es XOR. XOR da 1 cuando las dos entradas son distintas.
Si les das dos números enteros, cada operador aplica su puerta a cada pareja de bits, posición a posición.
OR con cada pareja de bits
python3 -c "print(0 | 0, 0 | 1, 1 | 0, 1 | 1)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Tres puertas con 9 y 5
echo $(( 9 & 5 )) $(( 9 | 5 )) $(( 9 ^ 5 ))Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejemplo resuelto: puertas con 9 y 5
| Bits | Decimal | |
|---|---|---|
| 9 | 1001 | 9 |
| 5 | 0101 | 5 |
| 9 AND 5 | 0001 | 1 |
| 9 OR 5 | 1101 | 13 |
| 9 XOR 5 | 1100 | 12 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Leer un circuito como una expresión
Las puertas se pueden unir: la salida de una es la entrada de la siguiente. El circuito se escribe como una expresión booleana: Q = (A OR B) AND (NOT C).
Se calcula como una cuenta. Primero los paréntesis, después la puerta que los une. Con tres entradas, la tabla de verdad tiene ocho filas.
Ejemplo resuelto: su tabla de verdad
| A | B | C | A OR B | NOT C | Q |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Dos puertas suman dos bits
En binario, 1 + 1 es 10: se escribe 0 y te llevas 1. Un semisumador lo hace con dos puertas.
El bit de la suma es A XOR B. El bit de acarreo, lo que te llevas, es A AND B. Un procesador suma números enteros con cadenas de sumadores como este.
La suma y el acarreo de 1 + 1
python3 -c "print(1 ^ 1, 1 & 1)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que OR significa una cosa o la otra, pero no las dos. En lógica, OR también da 1 cuando las dos entradas son 1. La puerta de «una pero no las dos» es XOR.
Para ir más lejos: sumar tres bits
Un semisumador suma dos bits. Para sumar números largos, cada posición tiene que sumar además el acarreo de su derecha. Eso pide un sumador completo, hecho con dos semisumadores y una puerta OR.
Calcula a mano el bit de suma y el de acarreo de 1 + 1 + 1. Después, los de 0 + 1 + 1.