sistemas-numericos-binario-hexadecimal

Sistemas numéricos: binario y hexadecimal en electrónica

  • 4 min

El sistema binario es un sistema de numeración en base 2 que representa la información usando solo 0 y 1. El hexadecimal aparece como su mejor aliado, porque nos permite escribir grupos de bits de forma compacta y legible cuando trabajamos con hardware.

Este artículo es clave porque, aunque hoy programemos en alto nivel, cuando bajamos a configurar un microcontrolador nos encontramos con bits, máscaras y registros hexadecimales por todas partes. Si no entiendes esto, un datasheet se convierte en un jeroglífico.

Los humanos contamos en sistema decimal (base 10) por una razón simple: tenemos 10 dedos. Pero las máquinas no tienen dedos. Tienen transistores. Y un transistor funciona fundamentalmente como un interruptor: o está encendido (1) o está apagado (0).

Por eso, para hablar con los procesadores, necesitamos aprender su idioma. Hoy vamos a ver el binario (el idioma del hardware) y el hexadecimal (el idioma de los programadores).

El sistema binario (la realidad física)

El sistema binario es un sistema en base 2. Solo existen dos símbolos: 0 y 1.

Cada dígito binario se llama bit (binary digit).

  • 0 lógico: 0 voltios (GND).
  • 1 lógico: 5 voltios (o 3.3V).

Agrupando bits

Como un solo bit da poca información, los agrupamos:

  • Nibble: 4 bits (ej: 1010).
  • Byte: 8 bits (ej: 11001010). Es la unidad estándar de almacenamiento.
  • Word (palabra): 16 o 32 bits, dependiendo de la arquitectura del procesador.

Contando en binario

Funciona igual que el decimal, pero “desborda” mucho antes.

  • Decimal: 0, 1, 2… 9 (se acabaron los símbolos) 10.
  • Binario: 0, 1 (se acabaron los símbolos) 10.
DecimalBinario (4 bits)
00000
10001
20010
30011
40100
50101

Cada posición a la izquierda vale el doble que la anterior (potencias de 2). 1011 = 1 · 8 + 0 · 4 + 1 · 2 + 1 · 1 = 11 en decimal.

El sistema hexadecimal

Los ordenadores no “piensan” en hexadecimal. Piensan en binario. El hexadecimal es un sistema para humanos.

Escribir binario es propenso a errores. Memorizar 1111000010100101 es casi imposible. Para solucionarlo, usamos el sistema hexadecimal (base 16). Usamos los números del 0 al 9 y añadimos las letras A, B, C, D, E, F.

La correspondencia clave

Esta es la razón de su existencia. Un dígito hexadecimal representa exactamente 4 bits (un nibble).

DecimalBinarioHexadecimal
0-90000-10010-9
101010A
111011B
121100C
131101D
141110E
151111F

Gracias a esto, podemos comprimir ese número binario horrible de antes:

  • Binario: 1111 0000 1010 0101
  • Hex: F 0 A 5

Escribir 0xF0A5 es mucho más limpio y fácil de recordar.

¿Por qué es imprescindible para registros?

Cuando programamos microcontroladores a bajo nivel, no usamos funciones genéricas. Manipulamos registros.

Un registro es una fila de interruptores (por ejemplo, 8 bits) que controlan hardware. Imagina el registro PORTD, que controla pines digitales de un microcontrolador. Si queremos encender los pines 0, 2, 4 y 6, y apagar los demás, necesitamos enviar este patrón: 0 1 0 1 0 1 0 1 (Binario 01010101).

Podemos escribirlo en código de tres formas:

// 1. Decimal (oculta qué bits están activos)
PORTD = 85; 

// 2. Binario (Visual, pero largo)
PORTD = 0b01010101; 

// 3. Hexadecimal (compacto)
PORTD = 0x55;
Copied!

Cuando veas código profesional, verás cosas como 0xFF (todos unos, 11111111) o 0x00 (todos ceros). Saber convertir mentalmente 0xA en 1010 es una habilidad que te ahorrará horas de depuración.

Prefijos en programación

Para que el compilador sepa de qué hablamos:

  • 0bxxxx → Binario (Ej: 0b0011)
  • 0xxxxx → Hexadecimal (Ej: 0x3F)
  • Sin prefijo → Decimal (Ej: 12)

Correspondencias importantes

  • Binario: representa dos estados lógicos mediante intervalos de tensión.
  • Hexadecimal: Una forma compacta de representar binario.
  • Correspondencia clave: 1 Hex = 4 Bits.
  • F = 1111: El “todo encendido” de 4 bits.
  • FF = 11111111: El “todo encendido” de un Byte.

Entender esto es el peaje necesario para entrar en la lógica digital. Ahora que sabemos cómo representar los 0s y 1s, vamos a ver qué operaciones podemos hacer con ellos.