¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Contar en binario y hexadecimal

Después de esta lección: Puedo guardar números enteros en binario y en hexadecimal.

Lección de 45 min6 comandosLaboratorio de compiladores y arquitectura: gcc, flex, bison y RISC-V en una VM

Ningún trozo pasa de 255

Mira la dirección IP de tu móvil en la wifi del instituto. Suele parecerse a 192.168.1.37.

Son cuatro números separados por puntos, y ninguno pasa nunca de 255. No es una casualidad. Cada uno se guarda en ocho interruptores diminutos. Al final de esta lección sabrás por qué ocho interruptores llegan justo a 255.

Al terminar esta lección

Nota

Puedo guardar números enteros en binario y en hexadecimal.

Palabras clave

PalabraQué significaEjemplo
Bituna cifra binaria, un 0 o un 1
Byteun grupo de ocho bits
Decimalla forma de contar de siempre, con las cifras 0 a 9
Binariocontar solo con las cifras 0 y 1100101
Valor posicionallo que vale una cifra según el sitio que ocupa
Hexadecimalcontar de dieciséis en dieciséis, con 0 a 9 y A a FC0

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. Es una máquina Ubuntu entera para ti, así que tarda un minuto en arrancar. Cada botón Ejecutar escribe su comando en el terminal de la máquina. Si dice que aún está arrancando, espera y vuelve a pulsarlo.

El binario solo usa 0 y 1

Dentro de un ordenador, cada número lo guardan interruptores apagados o encendidos. Apagado se escribe 0 y encendido, 1.

En decimal, cada posición vale diez veces más que la de su derecha. En binario, cada posición vale el doble. Un byte tiene ocho posiciones: 128, 64, 32, 16, 8, 4, 2 y 1. Suma las posiciones que tienen un 1.

Ejemplo resuelto: 37 en un byte

Valor posicional1286432168421
Bit00100101
Vale003200401

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Entra en la carpeta arch

Comando
cd ~/arch

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide a Python el 37 en binario

Comando
python3 -c "print(bin(37))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Vuelve a convertir los bits en decimal

Comando
python3 -c "print(int('100101', 2))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Dividir entre dos da los bits

Para pasar un número a binario, divídelo entre 2 y apunta el resto. Divide otra vez el resultado entre 2. Sigue hasta llegar a 0.

Los restos son los bits. Léelos de abajo arriba, del último al primero.

Ejemplo resuelto: 11 dividiendo entre dos

NúmeroEntre 2Resto
1151
521
210
101
Leído de abajo arriba1011

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La terminal también lee binario

Comando
echo $((2#1011))

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 lee el binario desde la izquierda, como si el primer bit valiera 1. El bit que vale 1 es el de la derecha. Cada posición hacia la izquierda vale el doble. Por eso 1000 es ocho y 0001 es uno.

El hexadecimal resume el binario

Las filas largas de bits cuestan de leer. El hexadecimal cuenta de dieciséis en dieciséis. Usa de 0 a 9 y después de A a F, que valen de diez a quince.

Una cifra hexadecimal equivale justo a cuatro bits. Así, un byte son siempre dos cifras. Parte el byte en dos mitades de cuatro bits y escribe cada mitad como una cifra.

Ejemplo resuelto: bytes en hexadecimal

DecimalBinarioLas dos mitadesHexadecimal
192110000001100 es 12, 0000 es 0C0
168101010001010 es 10, 1000 es 8A8
255111111111111 es 15, 1111 es 15FF

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La terminal escribe 192 en hexadecimal

Comando
printf '%x\n' 192

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide a Python dos más

Comando
python3 -c "print(hex(168), hex(255))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos: la dirección entera

La dirección 192.168.1.37 son cuatro bytes. Escribe cada uno en binario, con sus ocho bits, a mano.

Después compruébalo con to_binary de la tarea. ¿Cuántos bits tiene la dirección entera? ¿Cuántas direcciones distintas caben en esos bits?

Sobre este laboratorio y su código: Laboratorio de compiladores y arquitectura: gcc, flex, bison y RISC-V en una VM

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.