Calculadora de rotación de bits a izquierda y derecha
Esta calculadora de rotación de bits efectúa una rotación circular a izquierda o derecha dentro de un entero sin signo de ancho fijo.
Ejecutar — gratis
Los bits que salen por un extremo reaparecen de inmediato por el otro, como ocurre en registros de desplazamiento, primitivas criptográficas, sumas de comprobación, sistemas embebidos y formatos de bajo nivel. Introduzca un valor decimal, hexadecimal o binario, seleccione el ancho y la dirección, e indique un desplazamiento no negativo. La calculadora conserva los ceros iniciales y muestra resultados exactos en decimal, binario de ancho fijo y hexadecimal rellenado.
Elija el valor y el ancho exacto del registro
Una rotación solo queda definida cuando se conoce el ancho en bits. El mismo número puede producir resultados distintos en un registro de 8 bits y en otro de 16 bits, porque el límite de retorno se encuentra en una posición diferente. Introduzca el valor sin signo en notación decimal habitual, o utilice el prefijo 0x para hexadecimal y 0b para binario. Después seleccione un ancho de 1 a 4096 bits. El valor debe caber por completo en ese ancho; rechazar valores demasiado grandes evita que un truncamiento implícito oculte información. Las posiciones de cero iniciales pertenecen al registro aunque no aparezcan escritas en la entrada. Por ejemplo, el decimal 5 con ancho 8 se interpreta como 00000101, no simplemente como 101. El campo binario devuelto siempre se rellena hasta el ancho exacto seleccionado, mientras que el hexadecimal se completa con suficientes dígitos enteros para representarlo. Esta presentación explícita facilita comparar el resultado con un diagrama de registro, un campo de protocolo, un depurador o una implementación en código.
Comprenda el movimiento circular a izquierda y derecha
Una rotación circular se diferencia de un desplazamiento lógico normal porque no descarta ningún bit ni inserta ceros nuevos. En una rotación a izquierda, los bits avanzan hacia el extremo más significativo; los que cruzan ese límite vuelven a las posiciones menos significativas. En una rotación a derecha sucede lo contrario: los bits que salen por el extremo menos significativo regresan por el más significativo. La calculadora aplica la operación al patrón completo de ancho fijo mediante un único cálculo entero exacto. Un desplazamiento igual al ancho devuelve el patrón original, al igual que cualquier múltiplo entero del ancho. Por ello, la cantidad solicitada se reduce módulo el ancho y la respuesta incluye la cantidad efectiva como normalized_shift. Esto resulta útil para comprobar código que admite cantidades sin limitar o para modelar hardware cuyo selector solo necesita un estado por posición del registro. Si la cantidad efectiva es cero, el valor se conserva directamente, sin intentar un desplazamiento completo no válido.
Interprete la salida y verifique una implementación
La respuesta conserva el valor original normalizado en decimal, el ancho elegido, la cantidad solicitada, la cantidad efectiva y la dirección. A continuación presenta el valor rotado en decimal, binario de ancho fijo y hexadecimal en mayúsculas. Estas formas equivalentes sirven para verificaciones diferentes: el binario deja visibles todos los bits que retornan, el hexadecimal coincide de forma compacta con registros y documentación técnica, y el decimal resulta práctico para API o pruebas que evitan literales con prefijo. Para probar una implementación, utilice un patrón con bits activos cerca de ambos extremos, de modo que cualquier desplazamiento incorrecto sea evidente. Pruebe también una cantidad cero, otra exactamente igual al ancho y otra superior. Así detectará errores frecuentes de reducción modular y del comportamiento particular de cada lenguaje. El algoritmo usa enteros de precisión arbitraria en vez de operadores JavaScript de 32 bits, por lo que los anchos mayores no sufren conversiones con signo ni enmascaramiento silencioso. El proceso es determinista, local y acotado, sin red ni estado aleatorio o temporal.
Qué puede hacer con ella
Compruebe la lógica de registros embebidos
Compare la salida del firmware con un patrón binario exacto de ancho fijo antes de escribir o revisar código de dispositivos.
Verifique operaciones criptográficas
Confirme las rotaciones circulares de funciones hash, cifrados y mezclas sin sorpresas por aritmética con signo de 32 bits.
Cree vectores de prueba de protocolos
Genere valores esperados decimales, binarios y hexadecimales para campos cuyos bits retornan dentro de un ancho definido.
Preguntas frecuentes
¿En qué se diferencian la rotación y el desplazamiento de bits?
Un desplazamiento lógico descarta bits por un extremo e inserta ceros por el otro. Una rotación devuelve esos bits al extremo opuesto, de modo que todos permanecen en el patrón de ancho fijo.
¿Qué sucede si la cantidad de rotación supera el ancho?
La cantidad se reduce módulo el ancho. La respuesta muestra tanto el desplazamiento solicitado como el desplazamiento efectivo normalizado.
¿Puedo introducir valores hexadecimales o binarios?
Sí. Anteceda el hexadecimal con 0x y el binario con 0b. Una entrada sin prefijo se interpreta como decimal.
¿Por qué debe caber el valor en el ancho seleccionado?
El truncamiento automático podría eliminar bits altos sin avisar y producir un resultado engañoso. La calculadora rechaza el valor para que usted corrija explícitamente el valor o el ancho.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. La versión del navegador ejecuta localmente el mismo cálculo determinista.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/elec/rotate-bits \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"150","width":8,"shift":3,"direction":"left"}'const res = await fetch("https://api.kit.forhosting.com/elec/rotate-bits", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/rotate-bits",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/rotate-bits", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"150","width":8,"shift":3,"direction":"left"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"150","width":8,"shift":3,"direction":"left"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/rotate-bits", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.rotate_bits",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |