UD1. Sistemas de numeración

Unidad Didáctica 1. Fundamentos de Sistemas Digitales y Codificación

En este módulo, exploraremos los cimientos sobre los que se construyen dispositivos modernos como autómatas programables y microcontroladores. Comenzaremos estableciendo las bases teóricas necesarias para comprender cómo la información física se transforma en datos lógicos procesables por máquinas.

A continuación, desglosaremos los distintos sistemas de numeración que permiten esta representación numérica y analizaremos diversas técnicas de codificación esenciales para asegurar la integridad de los datos. Finalmente, abordaremos las operaciones aritméticas básicas en binario, incluyendo el manejo de números negativos, lo cual es indispensable para diseñar o programar circuitos digitales.

1. Introducción

1.1 Conceptos previos

Para entender la evolución tecnológica actual, es crucial distinguir entre los sistemas combinacionales y los secuenciales.

Los sistemas combinacionales actúan exclusivamente en función de sus entradas actuales; si cambias la entrada, cambia inmediatamente la salida, sin recordar el pasado.

Por el contrario, los sistemas secuenciales programables incorporan memoria interna, lo que permite que el estado de salida dependa tanto de las entradas presentes como del historial de estados anteriores. Esta capacidad de memorización es lo que integra la lógica binaria y el diseño digital en dispositivos complejos como los autómatas. Así, estos sistemas no solo procesan información binaria sino que también se apoyan en sistemas de numeración para codificar instrucciones, datos y estados internos de manera eficiente.

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.2 Señales analógicas y digitales

La información que circula por cualquier circuito puede ser de naturaleza física, ya sea analógica o digital. Una señal analógica es continua, tomando una infinitud de valores a lo largo del tiempo, como el sonido humano o la temperatura ambiental. En cambio, un sistema digital opera sobre niveles discretos definidos. Las señales eléctricas en estos sistemas solo adoptan dos valores o «estados lógicos»: el estado 0 y el estado 1. Estos estados corresponden físicamente a distintos niveles de tensión. Por ejemplo, 0 Voltios puede representar lógica «0» y 5 Voltios lógica «1», o bien se utilizan tensiones más modernas como 3.3V. El sistema debe tener conciencia de estos niveles para reconocerlos, tratarlos y obrar en consecuencia, discriminando ruidos pequeños que no perturban la lectura del nivel lógico principal.

![[img01.png|691]] Fig 1. Esquema del flujo de datos en el sistema.

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 ($10^n$). La primera columna derecha corresponde a $10^0$ (unidades), la siguiente a $10^1$ (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 ($2^n$). Para convertir de binario a decimal, se asignan potencias de 2 a cada posición empezando por la derecha ($2^0, 2^1…$), 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). Es importante recordar que en la implementación electrónica, la posición de mayor peso se sitúa a la izquierda de la cifra binaria, y cada posición será implementada por un bit físico.

2.3 Sistema Hexadecimal

El sistema hexadecimal utiliza una base de 16. Este sistema permite codificar valores elevados con menos símbolos al agrupar cuatro bits binarios en un único dígito. Los símbolos empleados son los dígitos del 0 al 9 seguidos por las letras A, B, C, D, E, F, que representan los valores decimales de 10 a 15 respectivamente. Son números llamados alfanuméricos. Una razón principal para su uso en ingeniería es la facilidad con la que se puede convertir a binario y viceversa: cada dígito hexadecimal corresponde exactamente a un grupo de 4 bits binarios. Esto permite visualizar largas cadenas de datos mucho más compactas sin perder precisión técnica.

3. Codificación

3.1 Definición

En la práctica, los sistemas digitales trabajan con estructuras de bits agrupadas para simplificar su uso y programación. A una agrupación de bits se le llama «palabra». Cuando la palabra tiene exactamente 8 bits, a ese grupo específico se le conoce como byte. 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, y el decodificador, que es el dispositivo inverso que recupera el valor original a partir del código recibido.

[INSERTAR IMAGEN 3: Esquema de flujo mostrando cómo un codificador transforma datos entrada en señales codificadas que pasan por un canal al decodificador].

3.2 Código BCD

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. Sus ventajas son claras: necesita menos símbolos que el binario natural para codificar valores elevados en una interfaz de usuario y es un código mucho más «cercano» o intuitivo al sistema decimal, facilitando la conversión visual con humanos.

3.3 Código Gray

El Código Gray es un tipo especial de numeración binaria donde el valor fundamental está diseñado para que dos números consecutivos difieran en un solo bit. Imagina una rueda mecánica o un sensor: si pasas de la posición 7 (0111) a la 8 (1000), un cambio brusco en tres bits simultáneamente podría causar errores por ruido electromagnético o «rebote» de contactos mecánicos. El Código Gray evita esto, asegurando que solo cambie un bit a la vez durante la transición de estados. Se utiliza extensamente para reducir errores en sistemas digitales durante transiciones de estados, como en los encoders rotativos o conversiones analógico-digitales donde la precisión absoluta en el momento del cambio es crítica.

3.4 Corrección de errores

Uno de los métodos más simples y comunes de detección de errores es la paridad. Este método consiste en añadir un nuevo bit al principio o final de la palabra binaria que actúa como indicador para asegurar que la cantidad total de bits con valor «1» (unos) cumpla con una regla específica. Existen dos variantes principales:

  • Paridad Par: Se añade el bit necesario para que el número total de unos en la palabra sea par. Si ya es par, el bit agregado es 0; si es impar, el bit agregado es 1.
  • Paridad Impar: Se añade el bit para que el resultado tenga un número impar de unos.

Este método es muy limitado: solo detecta errores donde se haya alterado un único bit en la transmisión o almacenamiento de datos. No puede detectar errores si dos bits se alternan simultáneamente, ya que la paridad total sigue siendo válida (por ejemplo, cambiar dos ceros por dos unos mantiene el número total de unos igual). No obstante, debido a su extrema simplicidad de diseño, sigue siendo uno de los códigos de detección de errores más utilizados en sistemas de transmisión de bajo coste.

4. Operaciones con Números Binarios

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  

4.2 Resta binaria

La resta binaria funciona de manera similar a la suma pero utiliza la operación inversa, restando el valor del bit menos al más (B – A). Aquí se introduce el concepto de «preste» o borrow. 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.

[INSERTAR IMAGEN 4: Tabla visual de la operación de resta con prestes resaltados en rojo].

4.3 Números negativos

Para poder trabajar con valores negativos, no podemos simplemente usar el bit más a la izquierda como signo sin cambiar las reglas matemáticas, ya que eso rompería la capacidad del circuito para realizar sumas simples. Para evitar esto, usamos el Complemento a 2 (A2), que es de los métodos más usados en ingeniería digital. 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 (o cero en sistemas especiales) 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.

Ejemplos de representación:

Decimal | Binario Natural | Complemento A2  
--------+-----------------+---------------  
+3 | 0011 | 0011  
-3 | 0011 -> Invertir (1100) -> Sumar 1 (1101)|  

4.4 Sumas y restas en BCD

En las operaciones con código BCD, el proceso es ligeramente diferente al binario natural. Primero, se suman o restan los dígitos como si fuera una operación de suma binaria simple sobre grupos de 4 bits. Sin embargo, en BCD los códigos válidos solo llegan hasta 1001 (9 decimal). Si después de la operación binaria el resultado es mayor que 1010 (10 decimal) o se genera un acarreo hacia una posición de dígito que no corresponde, la operación se considera inválida. En este caso, para corregir el error y mantener la integridad del código BCD, debe sumarse 0110 (6 decimal) al resultado obtenido. Por ejemplo, sumar 5 (0101) y 7 (0111) en binario da 12 (1100), lo cual es inválido en BCD porque el grupo de bits no representa un dígito decimal válido. Al agregar 6 (0110), obtenemos 18, que se lee como 1 y 8 en dos dígitos BCD correctos.

Deja un comentario