TechLead
Lección 13 de 16

Bits y Bytes

Entiende cómo las computadoras almacenan datos al nivel más bajo.

Resumen Rápido

Un bit es 0 o 1, y un byte son 8 bits. Los operadores a nivel de bits de JavaScript convierten números a enteros con signo de 32 bits, lo cual es útil para banderas y máscaras pero puede cambiar números grandes. Entender binario te ayuda a trabajar con datos de bajo nivel, colores y optimización de rendimiento.

Binario: El Lenguaje de las Computadoras

Las computadoras solo entienden dos estados: ENCENDIDO (1) y APAGADO (0). Todo — números, texto, imágenes — se almacena como patrones de 1s y 0s.

Bits y Bytes

  • Bit: Un solo dígito binario (0 o 1)
  • Byte: 8 bits (puede representar 0-255 o 256 valores)
  • Kilobyte (KB): ~1,000 bytes
  • Megabyte (MB): ~1,000,000 bytes

Números Binarios

Cada posición es una potencia de 2:

Position:  7   6   5   4   3   2   1   0
Value:   128  64  32  16   8   4   2   1

Binary:    1   0   1   0   1   0   0   1
         128 + 0 + 32 + 0 + 8 + 0 + 0 + 1 = 169

Operadores a Nivel de Bits en JavaScript

| Operador | Nombre | Descripción | |----------|--------|-------------| | & | AND | 1 si ambos bits son 1 | | | | OR | 1 si algún bit es 1 | | ^ | XOR | 1 si los bits son diferentes | | ~ | NOT | Invierte todos los bits | | << | Desplazamiento izquierdo | Multiplica por 2 | | >> | Desplazamiento derecho | Divide por 2 |

Usos Comunes

Banderas (múltiples booleanos en un número):

const READ = 1;    // 001
const WRITE = 2;   // 010
const EXECUTE = 4; // 100

let permissions = READ | WRITE; // 011 (read + write)

// Check permission
if (permissions & READ) {
  console.log("Can read");
}

Colores (RGB):

const color = 0xFF5733; // Orange in hex
const red = (color >> 16) & 0xFF;   // 255
const green = (color >> 8) & 0xFF;  // 87
const blue = color & 0xFF;          // 51

Pruébalo Tú Mismo

Aquí tienes un ejemplo práctico que puedes probar. Copia este código y ejecútalo en la consola de tu navegador (presiona F12 para abrir las herramientas de desarrollo) o en el Playground de Código.

// Binary to decimal conversion
const binary = "11001010";
const decimal = parseInt(binary, 2);
console.log(decimal); // 202

// Decimal to binary conversion
const num = 202;
const binaryStr = num.toString(2);
console.log(binaryStr); // "11001010"

// Bitwise operations
const a = 5;  // Binary: 0101
const b = 3;  // Binary: 0011

console.log(a & b);  // 1  (AND: 0001)
console.log(a | b);  // 7  (OR:  0111)
console.log(a ^ b);  // 6  (XOR: 0110)
console.log(~a);     // -6 (NOT: inverts all bits)
console.log(a << 1); // 10 (left shift: multiply by 2)
console.log(a >> 1); // 2  (right shift: divide by 2)

// Practical: Check if number is even/odd
const isEven = (n) => (n & 1) === 0;
console.log(isEven(4)); // true
console.log(isEven(7)); // false

// Practical: Permission flags
const READ = 1;    // 001
const WRITE = 2;   // 010
const DELETE = 4;  // 100

let userPermissions = READ | WRITE; // 011

// Check if user can write
if (userPermissions & WRITE) {
  console.log("User can write"); // This prints
}

Puntos Clave

  • Entiende cómo las computadoras almacenan datos al nivel más bajo.
  • Practica con ejemplos de código reales para solidificar tu comprensión
  • Este concepto construye la base para temas más avanzados

Recursos de Aprendizaje Relacionados

Continúa tu camino de programación con estos tutoriales relacionados: