Calcolatore di rotazione dei bit a sinistra e a destra
Ruotare 150 di tre posizioni a sinistra in un registro a 8 bit dà 180, cioè 10110100 in binario: i bit che escono da un'estremità rientrano dall'altra. Larghezze da 1 a 4096 bit. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- 150
- Larghezza
- 8
- Spostamento
- 3
- Direzione
- Left
- Valore decimale
- 150
- Spostamento normalizzato
- 3
- Risultato decimale
- 180
- Risultato in binario
- 10110100
Questo calcolatore esegue una rotazione circolare verso sinistra o destra all’interno di un intero senza segno a larghezza fissa. 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.
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.
È 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. 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
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.
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.
Perché lo stesso numero ruota in modo diverso a 8 e a 16 bit?
Perché la larghezza decide dove avviene il giro. I bit che escono da un'estremità ricompaiono all'altra estremità del registro, e un registro a 8 bit e uno a 16 bit mettono quel confine in punti diversi, quindi il risultato cambia.
Strumenti correlati
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. |
Note tecniche
Scelga il valore e la larghezza esatta del registro
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
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.
Legga l’output e verifichi un’implementazione
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.
Casi di integrazione
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.
Domande tecniche
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La versione nel browser esegue localmente lo stesso calcolo deterministico.