Sistemas de Numeración y Codificación en Entornos Digitales
Es fundamental comprender que la tecnología que utilizamos hoy, desde el microcontrolador que gestiona un brazo robótico hasta el protocolo de comunicación de una red industrial, no funciona por “magia”. Todo lo que vemos en el mundo digital se sustenta sobre unos pilares fundamentales: los Sistemas de Numeración.
En esta unidad, no solo aprenderemos a convertir números; entenderemos la lógica detrás del diseño de circuitos, la eficiencia en la transmisión de datos y cómo los ingenieros han resuelto problemas críticos mediante métodos de codificación específicos. El dominio de estos conceptos es la base para programar PLCs, diseñar sistemas embebidos y realizar mantenimiento avanzado en sistemas automáticos.
1. Introducción a la Lógica Digital
Antes de sumergirnos en los cálculos, debemos entender el entorno en el que operamos. La tecnología moderna se divide principalmente en dos grandes familias según cómo procesan la información: los Sistemas Combinacionales y los Sistemas Secuenciales Programables.
Mientras que un sistema combinacional depende exclusivamente de las entradas actuales, los sistemas secuenciales incorporan memoria, lo que les permite “recordar” estados previos. Esta evolución es la base de los autómatas programables y de cualquier dispositivo con capacidad de ejecución de instrucciones complejas.
Los sistemas de numeración aportan el lenguaje, los sistemas digitales la estructura, y los secuenciales programables la flexibilidad para crear aplicaciones más complejas y adaptables
1.1 Señales Analógicas y Digitales
Para entender por qué usamos sistemas binarios, debemos distinguir cómo viaja la información en el mundo físico:
- Señales Analógicas: Son variaciones continuas en el tiempo. Imagina una onda de sonido o la temperatura ambiente; pueden tomar infinitos valores posibles dentro de un rango (22,3ºC, 22,31ºC, 22,432ºC, etc.). En la práctica industrial, las señales analógicas son difíciles de transmitir a largas distancias sin ruido, ya que cualquier pequeña interferencia altera el valor original.
- Señales Digitales: Son variaciones en un número limitado y discreto de valores. En nuestro campo, esto se traduce casi siempre al uso de estados lógicos.
En un sistema digital, la información se reduce a dos estados: 0 (Bajo) y 1 (Alto). Estos estados no son números abstractos; corresponden a niveles físicos de voltaje. Por ejemplo, en circuitos de baja potencia, el nivel “0” puede ser 0V y el “1” pueden ser 3,3V o 5V.
El sistema debe tener conciencia de estos niveles para reconocerlos, tratarlos y actuar en consecuencia.

2. Sistemas de Numeración
En todo sistema de numeración posicional, el valor de cada símbolo depende de su posición dentro del número. Para comprender esto mejor, veamos primero la base decimal que utilizamos en nuestra vida diaria y luego compararemos cómo funcionan los sistemas digitales.
2.1 Sistema Decimal
El sistema decimal es un sistema de numeración en base 10 porque utiliza diez símbolos distintos: el 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.
En este sistema, cada posición representa una potencia de la base 10 (). La primera columna derecha corresponde a (unidades), la siguiente a (decenas), y así sucesivamente hacia potencias mayores para valores enteros, o potencias negativas para decimales.

Por ejemplo, el número 3451,528 se compone de 3000 + 400 + 50 + 1 + 0,5 + 0,02 + 0,008. Este sistema permite representar cifras superiores al número de símbolos mediante la posición, facilitando operaciones matemáticas complejas.

2.2 Sistema Binario
El sistema binario es el lenguaje natural de las máquinas digitales. En este sistema solo existen dos símbolos distintos: el “0” y el “1”, conocidos como bits. Al igual que en decimal, cada dígito tiene un valor dependiendo de su posición, pero ahora la base es 2 (). Para convertir de binario a decimal, se asignan potencias de 2 a cada posición empezando por la derecha (), se multiplican los dígitos por sus pesos y se suman los resultados.

Para pasar de decimal a binario, el procedimiento es inverso: se divide el número decimal entre 2 repetidamente hasta que el cociente sea menor que 2, anotando los restos en cada división y leyendo el resultado desde abajo hacia arriba (del último resto al primero).
En el diseño de circuitos integrados (como los que encontramos en microcontroladores), cada posición de la cifra binaria es implementada por un Bit (Unidad Elemental de Memoria). Es crucial distinguir entre:
- MSB (Most Significant Bit): El bit de mayor peso, situado a la izquierda.
- LSB (Least Significant Bit): El bit de menor peso, situado a la derecha.
Para diferenciar un sistema de numeración de otro, se añadirá al final de la cifra un subíndice con la base del sistema de numeración:
| Sistema de numeración | Representación |
|---|---|
| Decimal | 3451,528(10 |
| Binario | 1001,01(2 |
| Octal | 3556(8 |
| Hexadecimal | 34FF(16 |
2.3 Sistema Hexadecimal
El Sistema Hexadecimal es un sistema en base 16. Se utiliza principalmente para simplificar la lectura de grandes cadenas binarias. En lugar de leer “11111010”, se lee “FA”. Este sistema es fundamental en la programación de direcciones de memoria y configuración de registros en microprocesadores.

Utiliza los símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15).
Para pasar de Hexadecimal a Binario, cada dígito hexadecimal se sustituye por un grupo de 4 bits (cuarteto o “nibble”). Esto es vital en la programación de hardware, ya que permite visualizar rápidamente la estructura interna de los registros.
Ejemplo: 45DF(16 → 0100 0101 1101 1111(2
También hay que tener en cuenta, que en el entorno industrial, no trabajamos con bits aislados en la práctica diaria, sino con estructuras agrupadas:
- Word (Palabra): Un grupo de bits que forma una unidad de procesamiento. Puede ser de 8, 16 o 32 bits según la arquitectura (ej. un PLC Siemens S7-200 usa palabras de 16 bits).
- Byte: Es una agrupación específica de 8 bits. Es la unidad estándar para representar caracteres o valores numéricos pequeños.
3. Codificación
3.1 Definición y Utilidad
En la práctica, tal y como se ha indicado, los sistemas digitales trabajan con estructuras de bits agrupadas para simplificar su uso y programación.
Si se utiliza un sistema de codificación, todos los dispositivos implicados deben conocer el significado del mismo. Existen dos componentes clave en este proceso:
- El codificador, que traduce un valor del sistema de numeración base (como decimal o binario puro) a un código especial particular para transmisión o almacenamiento
- El decodificador, que es el dispositivo inverso que recupera el valor original a partir del código recibido.
Existen una serie de códigos que por su importancia y utilización repetida se han considerado como universales, normalizándose para evitar incongruencias
3.2 Código BCD (Binary-Coded Decimal)
El código BCD (del inglés Binary-Coded Decimal) representa números decimales utilizando palabras de 4 bits para cada dígito del número original.
A diferencia del binario natural, donde las combinaciones representan potencias de 2 consecutivas, en el BCD solo se codifican los dígitos del 0 al 9 (de 0000 a 1001). Este código no utiliza los valores superiores (1010 a 1111) para representar números.

Se utiliza principalmente cuando se requiere mostrar números en pantallas de siete segmentos o en interfaces de usuario. Es un código “más cercano” al decimal, lo que facilita la conversión directa a displays sin realizar cálculos complejos de redondeo binario.
3.3 Código Gray
El Código Gray es un sistema donde dos valores consecutivos difieren en solo un bit.
- Importancia Práctica: En sensores rotativos (encoders), si un valor cambia de 7 a 8 en binario puro, varios bits cambian simultáneamente (01110111 a 10001000). Si el sensor detecta estos cambios en tiempos ligeramente distintos debido al ruido eléctrico, podría registrar un valor erróneo durante una fracción de segundo. En Código Gray, como solo cambia un bit, la lectura es mucho más estable y robusta frente a errores de sincronización.
| Decimal | Binario | Gray |
|---|---|---|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |
| 5 | 101 | 111 |
| 6 | 110 | 101 |
| 7 | 111 | 100 |
3.4 Corrección de Errores: El Bit de Paridad
En la transmisión de datos por cables industriales o redes inalámbricas, los pulsos eléctricos pueden perderse o invertirse debido al ruido electromagnético (EMI). Para evitar esto, se utiliza el Bit de Paridad.
Se añade un bit extra antes del paquete de datos que indica si el número total de “unos” en la palabra es par o impar.
- Paridad Par: Si hay un número par de unos, el bit de control es 0.
- Paridad Impar: Si hay un número impar de unos, el bit de control es 1.
Pasos críticos para la verificación de paridad:
- Recibir el paquete con el bit de paridad incluido.
- Contar los “unos” en la sección de datos.
- Verificar si la paridad coincide con el indicador. Si no coincide, se activa una señal de error y se solicita la retransmisión del paquete.
4. Operaciones con Números Binarios
Una vez que entendemos cómo representar los números, debemos saber cómo manipularlos matemáticamente en el procesador.
4.1 Suma Binaria
La suma binaria es el principio fundamental de todos los cálculos digitales. Se rige por reglas simples que se aplican bit a bit desde la derecha hacia la izquierda, gestionando los acarreos (carry). La regla básica es:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 1 = 0 con acarreo de 1.
Cuando se suman dos bits y se tiene un acarreo entrante (1), la suma total puede llegar a ser 2, lo que en binario se representa como 0 con un nuevo acarreo hacia el siguiente bit más alto. A continuación se muestra la lógica resumida en una tabla de verdad para la adición de dos bits:
| A | B | C (acarreo entrada) | S (Suma) | C’ (acarreo salida) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 1 |
La suma binaria sigue reglas similares a la decimal, pero con una base menor
4.2 Resta Binaria
En sistemas digitales, la resta se realiza mediante un algoritmo de préstamo o “borrow”. Si intentamos restar 1−0, no hay problema, pero si restamos un 1 a un 0, necesitamos “pedir prestado” al siguiente bit a la izquierda, lo que cambia los valores en cascada.
La lógica para el resultado binario y el preste generado es inversa: si restamos dos iguales obtenemos 0 sin preste; si restamos el mayor del menor se genera un preste hacia adelante.
| A | B | C (acarreo entrada) | S (Suma) | C’ (acarreo salida) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 |
4.3 Números Negativos: El Complemento a 2
Esta es una de las secciones más importantes para la programación de bajo nivel. En los sistemas digitales, no existen “signos” físicos; todo son bits. Para representar números negativos, utilizamos el sistema de Complemento a 2.
EL Complemento a 2 permite que la unidad lógica aritmética (ALU) del procesador realice sumas y restas utilizando el mismo circuito físico. No necesita un “restador” separado, simplemente suma el número en complemento a dos.
La representación se determina observando el bit más significativo o MBS:
- Si el MBS = 0, el número es positivo y la representación binaria es la natural del valor absoluto.
- Si el MBS = 1, el número es negativo y para hallar su valor absoluto se deben invertir todos los bits (cambiar 0 por 1 y viceversa) y luego sumar 1 a ese resultado.
Procedimiento para convertir a Complemento a 2:
- Identificar el bit de signo (MSB). Si es 1, el número es negativo.
- Si es negativo, invertir todos los bits (lo que era 0 pasa a 1 y viceversa).
- Sumar 1 al resultado.
Ejemplo paso a paso: Queremos representar −5 en un sistema de 8 bits.
- Binario natural de 5:
00000101 - Invertir bits:
11111010 - Sumar 1:
11111011(Este es el valor -5 en Complemento a 2).
4.4 Sumas y Restas en BCD
Cuando trabajamos con el código BCD, las reglas de aritmética cambian ligeramente. Como cada unidad debe ser un “digito” independiente, si al sumar dos números binarios que representan BCD, el resultado es mayor o igual a 1010 (es decir, supera los 9), o si hay un acarreo en la posición del dígito, se debe aplicar una corrección.
Regla de Corrección: Si el resultado de una suma binaria en una posición de BCD es ≥1001(2 o si hubo un acarreo, se debe sumar 0110 (que equivale a 6 en decimal) para corregir la posición y devolver el valor al formato BCD correcto.
