Calcolatore di rotazione dei bit a sinistra e a destra
Questo calcolatore esegue una rotazione circolare verso sinistra o destra all’interno di un intero senza segno a larghezza fissa.
Esegui gratis nel browser
I bit che escono da un’estremità ricompaiono subito dall’altra, come avviene nei registri a scorrimento, nelle primitive crittografiche, nei checksum, nei sistemi embedded e nei formati di basso livello. Inserisca un valore decimale, esadecimale o binario, scelga larghezza e direzione e specifichi un conteggio non negativo. Il calcolatore conserva le posizioni iniziali a zero e restituisce risultati esatti in formato decimale, binario a larghezza fissa ed esadecimale con riempimento.
Scelga il valore e la larghezza esatta del registro
Una rotazione ha significato solo quando è nota la larghezza in bit. Lo stesso valore numerico può dare risultati diversi in un registro da 8 bit e in uno da 16 bit, perché il confine di riporto si trova in posizioni differenti. Inserisca il valore senza segno nella normale notazione decimale oppure utilizzi il prefisso 0x per l’esadecimale e 0b per il binario. Selezioni quindi una larghezza compresa tra 1 e 4096 bit. Il valore deve rientrare completamente nella larghezza; rifiutare valori troppo grandi impedisce che un troncamento implicito nasconda informazioni. Le posizioni iniziali a zero appartengono al registro anche se non sono scritte nell’input. Per esempio, il decimale 5 con larghezza 8 viene interpretato come 00000101, non soltanto 101. Il campo binario restituito viene sempre completato fino alla larghezza scelta, mentre quello esadecimale riceve un numero sufficiente di cifre intere. Questa rappresentazione esplicita semplifica il confronto con uno schema di registro, un campo di protocollo, un debugger o un’implementazione in un linguaggio di programmazione.
Comprenda il movimento circolare nelle due direzioni
Una rotazione circolare è diversa da un normale scorrimento logico perché non elimina alcun bit e non inserisce nuovi zeri. Nella rotazione a sinistra, i bit avanzano verso l’estremità più significativa; quelli che oltrepassano il confine ritornano nelle posizioni meno significative. Nella rotazione a destra il movimento è inverso e i bit che escono dal lato meno significativo rientrano da quello più significativo. Il calcolatore applica l’operazione all’intero schema a larghezza fissa con un calcolo intero esatto. Un conteggio uguale alla larghezza restituisce lo schema originale, come qualsiasi multiplo intero della larghezza. Per questo il conteggio inserito viene ridotto modulo la larghezza e quello effettivo compare nel risultato come normalized_shift. È utile per controllare codice che accetta conteggi senza limite o per modellare hardware nel quale il selettore richiede un solo stato per ogni posizione. Un conteggio effettivo pari a zero viene gestito direttamente, conservando il valore senza tentare uno scorrimento completo non valido.
Legga l’output e verifichi un’implementazione
La risposta conserva il valore originale in forma decimale normalizzata, la larghezza scelta, il conteggio richiesto, quello effettivo e la direzione. Presenta poi il valore ruotato in decimale, binario a larghezza fissa ed esadecimale maiuscolo. Queste forme equivalenti servono controlli diversi: il binario espone ogni bit riportato, l’esadecimale coincide in modo compatto con registri e documentazione tecnica, mentre il decimale è comodo per API o test che evitano letterali con prefisso. Per provare un’implementazione, scelga uno schema con bit impostati vicino a entrambe le estremità, così uno scorrimento errato diventa evidente. Verifichi anche il conteggio zero, uno uguale alla larghezza e uno maggiore. Questi casi individuano comuni errori di riduzione modulare e comportamenti specifici dei linguaggi. L’algoritmo usa aritmetica intera a precisione arbitraria anziché operatori JavaScript a 32 bit; le larghezze maggiori non subiscono conversioni con segno o mascheramenti silenziosi. L’elaborazione è deterministica, locale e limitata, senza rete né stato casuale o temporale.
Casi d'uso
Controllare la logica di registri embedded
Confronti l’output del firmware con uno schema binario esatto a larghezza fissa prima di scrivere o revisionare il codice del dispositivo.
Verificare passaggi crittografici
Confermi le rotazioni circolari di funzioni hash, cifrari e operazioni di mescolamento senza sorprese dovute all’aritmetica con segno a 32 bit.
Creare vettori di test per protocolli
Generi risultati attesi decimali, binari ed esadecimali per campi i cui bit ritornano entro una larghezza definita.
Domande frequenti
Qual è la differenza tra rotazione e scorrimento dei bit?
Uno scorrimento logico elimina bit da un’estremità e inserisce zeri dall’altra. Una rotazione riporta quei bit sul lato opposto, mantenendoli tutti nello schema a larghezza fissa.
Che cosa accade quando il conteggio supera la larghezza?
Il conteggio viene ridotto modulo la larghezza. La risposta mostra sia lo scorrimento richiesto sia quello effettivo normalizzato.
Posso inserire valori esadecimali o binari?
Sì. Anteponda 0x al valore esadecimale e 0b a quello binario. Un input privo di prefisso viene interpretato come decimale.
Perché il valore deve rientrare nella larghezza scelta?
Un troncamento automatico potrebbe rimuovere silenziosamente i bit più alti e produrre un risultato fuorviante. Il calcolatore rifiuta il valore affinché Lei corregga esplicitamente il valore o la larghezza.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La versione nel browser esegue localmente lo stesso calcolo deterministico.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.rotate_bits",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |