Ir al contenido

Sistemas digitales, numeración y conversiones

Un sistema digital cuenta, guarda y procesa cantidades. Fuera de la máquina usamos decimal (base 10). Dentro, casi todo es binario (base 2): cada dígito vale 0 o 1. Octal (base 8) y hexadecimal (base 16) son atajos para no escribir tiras enormes de unos y ceros.

Esta unidad es la base del primer parcial: si no conviertes con método, el resto (códigos, Hamming, BCD en displays) se cae.

Un sistema posicional da a cada dígito un peso: potencia de la base, contando desde la derecha (posición 0).

N = dn · bn + ⋯ + d1 · b1 + d0 · b0
SistemaBaseDígitosEjemplo
Decimal100–945₁₀
Binario20, 1101101₂
Octal80–755₈
Hexadecimal160–9 y A–F (10–15)2D₁₆

En inglés se abrevian así; en el parcial y en datasheets salen las siglas, así que conviene la traducción directa:

SiglaInglésTraducciónDónde estáPeso
MSBMost Significant Bitbit más significativoextremo izquierdoel mayor (en 8 bits: 128)
LSBLeast Significant Bitbit menos significativoextremo derechoel menor (siempre 1)

“Significativo” aquí no significa “importante en el texto”: significa cuánto aporta al valor. Si volteas el LSB, el número cambia en 1. Si volteas el MSB de un byte, cambia en 128.

Ejemplo 101101₂ (6 bits):

posición 543210
bit 101101
peso 32168421
MSB LSB

El MSB es el 1 de la izquierda (vale 32). El LSB es el 1 de la derecha (vale 1). En un byte se numeran bits 7…0: bit 7 = MSB, bit 0 = LSB.

Un bit es un 0 o un 1. Un nibble (a veces nible) es un grupo de 4 bits. Un byte son 8 bits = dos nibbles.

Cuatro bits dan 2⁴ = 16 combinaciones: de 0000 a 1111. El hexadecimal usa exactamente esas 16: un dígito hex es un nibble. Por eso 2D₁₆ son dos nibbles: 0010 y 1101.

Eso se escribe en una tabla de equivalencias (abajo). Se parece a una tabla de verdad porque lista todas las combinaciones de 4 bits; la diferencia es el significado de la última columna.

HexBinario (nibble)Decimal
000000
100011
200102
300113
401004
501015
601106
701117
810008
910019
A101010
B101111
C110012
D110113
E111014
F111115

Octal es lo mismo con 3 bits (8 combinaciones): 0 → 0007 → 111.

El binario es el centro: casi todo pasa por ahí. Las flechas son bilaterales (idas y vueltas). Decimal ↔ binario va directo. Hex ↔ binario y octal ↔ binario también (agrupando bits). Decimal ↔ hex no se agrupa: o pasas por binario, o divides entre 16.

Decimal 10
Octal 8
Binario 2
Hex 16
Decimal ↔ hex no se agrupa: vas Decimal → Binario → Hex (o ÷ 16).

Hay dos métodos que dan el mismo resultado. En el parcial vale cualquiera si lo justificas.

Método 1 — suma de pesos. Bajo cada bit pones su potencia de 2 (… 32 16 8 4 2 1) y solo sumas donde el bit es 1.

Ejemplo 101101₂:

posición 543210
bit 101101
peso 32168421
aporta 32841
MSB LSB

suma: 32 + 8 + 4 + 1 = 4510

Los ceros no aportan (casillas con —). En verde: 32 + 8 + 4 + 1 = 45₁₀.

Método 2 — duplicar y sumar (desde el MSB). Tomas el primer bit (izquierda). Luego, por cada bit que sigue: (lo que llevas) × 2 + ese bit. El 2 se escribe en cada renglón; no hay problema en repetir el número.

101101₂, de izquierda a derecha:

Bit que entraOperaciónResultado
1 (MSB)empiezas con ese bit1
01 × 2 + 02
12 × 2 + 15
15 × 2 + 111
011 × 2 + 022
1 (LSB)22 × 2 + 145

Otra vez 45₁₀.

William George Horner (siglo XIX) describió una forma de evaluar un polinomio anidando sumas y productos, sin calcular cada potencia por separado.

Un número en base b es un polinomio: el bit más a la izquierda multiplica bⁿ, el siguiente bⁿ⁻¹, y el LSB multiplica b⁰ = 1. Eso se factoriza así:

101101₂ = (((((1)×2 + 0)×2 + 1)×2 + 1)×2 + 0)×2 + 1

Cada paréntesis es un renglón de la tabla: llevas × 2 + bit. Por eso “duplicar y sumar” y “regla de Horner” son el mismo método cuando la base es 2.

En hexadecimal sería × 16 + dígito; en decimal, × 10 + dígito. No hace falta memorizar 32, 64, 128…: el anidado las genera solo.

Útil si el número es largo. Con 6–8 bits, la suma de pesos sigue siendo más visual.

Divide entre 2, anota el resto (0 o 1). El binario se lee de abajo hacia arriba (el último resto es el MSB).

45₁₀:

45 ÷ 2 = 22 resto 1
22 ÷ 2 = 11 resto 0
11 ÷ 2 = 5 resto 1
5 ÷ 2 = 2 resto 1
2 ÷ 2 = 1 resto 0
1 ÷ 2 = 0 resto 1

101101₂ (comprueba: 32+8+4+1 = 45).

Desde el LSB, agrupa de a 3 bits. Completa con ceros a la izquierda si hace falta. Cada grupo es un dígito octal.

101101₂101 10155₈

Al revés: cada dígito octal → 3 bits. 153₈001 101 0111101011₂.

Igual, pero de a 4 bits.

101101₂0010 11012D₁₆

2F₁₆0010 1111101111₂ = 32+8+4+2+1 = 47₁₀.

En el mapa no hay flecha directa por agrupación entre decimal y hex: 10 y 16 no “parten” el mismo número de bits. El camino de aula (y el más seguro en el parcial) es pasar por el centro:

decimal → binario → hex y al revés hex → binario → decimal

Ida (45₁₀ → hex), por binario:

  1. Decimal → binario (÷ 2): 45₁₀ = 101101₂ (ya lo hiciste arriba).
  2. Binario → hex (grupos de 4 desde el LSB). Sobran 6 bits: completa a la izquierda con ceros → 0010 1101.
  3. Cada nibble es un dígito hex: 0010 = 2, 1101 = D2D₁₆.

Vuelta (2D₁₆ → decimal), por binario:

  1. Cada dígito hex → 4 bits: 2 = 0010, D = 110100101101₂.
  2. Binario → decimal (pesos): 32+8+4+1 = 45₁₀.

Otro camino (sin agrupar bits): divide el decimal entre 16, restos de abajo hacia arriba (10=A … 15=F). No es “más directo” en el mapa: es otra aritmética, misma llegada.

45 ÷ 16 = 2 resto 13 → D
2 ÷ 16 = 0 resto 2 → 2

Lees restos de abajo arriba: 2D₁₆. Para volver: 2×16 + 13 = 45.

Separa el número en entera y fraccionaria (el punto). La parte entera se convierte con los métodos de arriba. La fracción no se divide entre 2: se multiplica por la base.

Regla: fracción × 2. El entero que aparece (0 o 1) es el siguiente bit después del punto. Te quedas solo con la parte decimal nueva y repites. El primer bit que sale es el de más peso a la derecha del punto (2⁻¹ = 1/2).

Paras cuando la fracción queda 0, o cuando el profesor pide n bits (si no termina, se aproxima).

Ejemplo 0,625₁₀:

PasoCuentaBit que saleFracción que sigue
10,625 × 2 = 1,25010,250
20,250 × 2 = 0,50000,500
30,500 × 2 = 1,00010 (terminó)

Los bits se leen de arriba hacia abajo (el primero es el más cercano al punto): 0,101₂.

Número mixto: convierte cada lado y junta con el punto. 5,625₁₀5 = 101₂ y 0,625 = 0,101₂101,101₂.

Si no cierra en 0 (pasa con 0,1₁₀), el binario se repite. Escribes los bits que pidan y listo; no es un error del método.

A la derecha del punto los pesos son 1/2, 1/4, 1/8, 1/16… (o 0,5, 0,25, 0,125…). Solo sumas donde hay 1. Igual que en enteros, pero hacia la derecha.

0,101₂:

BitPesoAporta
1 (junto al punto)0,50,5
00,25
10,1250,125

0,5 + 0,125 = 0,625₁₀. Con la parte entera: 101,101₂ = 5 + 0,625 = 5,625₁₀.

Misma idea, otra base: fracción × 8 (octal) o × 16 (hex). El entero que sale es el siguiente dígito (en hex, 10–15 = A–F).

En el mapa del centro sigue valiendo el atajo: fracción decimal → binario → hex (grupos de 4 bits a la derecha del punto, completar con ceros a la derecha si hace falta).

En el mismo capítulo 2, después de convertir, vienen BCD, exceso-3, Gray y paridad (esta última se cierra en Hamming).

BCD (Binary-Coded Decimal, decimal codificado en binario): cada dígito decimal se traduce solo, con 4 bits, usando la misma tabla de 0–9 del nibble. No conviertes el número entero a binario y luego lo cortas.

Tabla que usas (solo 0–9; 10101111 no son dígitos BCD):

DígitoBCD (4 bits)DígitoBCD
0000050101
1000160110
2001070111
3001181000
4010091001

45₁₀ en BCD, dígito a dígito:

  1. El 4 → mira la tabla → 0100
  2. El 50101
  3. Pégalos: 0100 0101

El binario puro de 45 es otra cuenta: 32+8+4+1 = 101101₂. Si agrupas ese 101101 de a 4 (0010 1101) obtienes hex 2D, no BCD. Por eso la columna “binario puro” y la de “BCD” no coinciden y las dos están bien.

59₁₀ en BCD: 50101, 910010101 1001.
Binario puro: 32+16+8+2+1 = 111011₂ (otra vez distinto).

En parciales aparecen interruptores 00–99 (4 bits de decenas + 4 de unidades) y displays. “Pasa 59 a BCD” no es “pasa 59 a binario”.

A cada dígito decimal le sumas 3 y lo pones en 4 bits: 0 → 0011, 9 → 1100.
59₁₀ en exceso-3: 5+3=8 → 1000, 9+3=12 → 11001000 1100.

Sirve para aritmética BCD (el 74LS83 aparece más adelante). Aquí basta saber generarlo dígito a dígito.

El código Gray (o binario reflejado) sirve para que, al pasar de un número al siguiente, solo un bit cambie. En binario normal, 7 → 8 es 01111000: cambian cuatro bits a la vez; un encoder mecánico puede leer un valor imposible a mitad de camino. Gray evita eso. No se usa para sumar: no tiene pesos 1, 2, 4, 8.

De 0 a 7 (mira que cada fila cambia un solo bit respecto a la anterior):

DecimalBinarioGray
0000000
1001001
2010011
3011010
4100110
5101111
6110101
7111100

El MSB se copia. Cada bit Gray siguiente es el XOR de ese bit binario con el binario de su izquierda (el más significativo vecino). XOR: sale 1 si los dos bits son distintos.

G_MSB = B_MSB
G = (bit binario de la izquierda) XOR (bit binario de esta posición)

Ejemplo 1011₂ → Gray:

MSBLSB
Binario1011
Gray1 (copia)1 XOR 0 = 10 XOR 1 = 11 XOR 1 = 0

Gray = 1110.

Otro: 101101₂ (el 45 de antes) → copia el primer 1; luego XOR en cadena: 1⊕0=1, 0⊕1=1, 1⊕1=0, 1⊕0=1, 0⊕1=1111011.

El MSB se copia. Cada binario siguiente es el XOR del binario que ya sacaste (izquierda) con el Gray de esa posición.

B_MSB = G_MSB
B = (binario ya obtenido a la izquierda) XOR (Gray de esta posición)

1110 Gray → 1, 1⊕1=0, 0⊕1=1, 1⊕0=11011₂ (recuperaste el original).

Ejercicios (números distintos a los del ejemplo)

Sección titulada «Ejercicios (números distintos a los del ejemplo)»

Hazlos en papel; el método tiene que funcionar si cambian el número.

  1. Pasa 53₁₀ a binario, octal y hexadecimal.
  2. Pasa 1101110₂ a decimal, octal y hex.
  3. Pasa 3A₁₆ a binario y a decimal.
  4. Escribe 86₁₀ en binario puro y en BCD. ¿En qué se diferencian?
  5. Escribe 86₁₀ en exceso-3.
  6. 0,375₁₀ a binario fraccionario.
  7. Pasa 10110₂ a Gray y comprueba la vuelta Gray → binario.

Comprobaciones rápidas: (1) 53 = 110101₂ = 65₈ = 35₁₆. (2) 110 = 156₈ = 6E₁₆. (3) 0011 1010₂ = 58. (4) binario 1010110, BCD 1000 0110. (5) 8+3=11 → 1011, 6+3=9 → 10011011 1001. (6) 0,011₂. (7) Gray 11101; vuelta 10110.

Examen interactivo

Numeración y conversiones

Basado en: Rojas / Floyd cap. 2 — CALETAS

0 de 0 respondidas

En el mapa de conversiones, el camino habitual de decimal a hexadecimal es…
En 101101₂, el MSB es…
45₁₀ en binario puro es…
45₁₀ en BCD se obtiene…
0,625₁₀ a binario fraccionario (×2, bits de arriba abajo) es…
1011₂ a código Gray (copiar MSB, luego XOR con el de la izquierda) es…
LSB se traduce como…
2D₁₆ a binario, con grupos de 4 bits, es…

Siguiente abre el trabajo de código Hamming (parcial I: reseña + (7,4)). Luego sigue álgebra booleana.

Marca la unidad en la ruta de estudio.