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: