Shift aritmetico a destra di interi con segno
Questo calcolatore di shift aritmetico a destra sposta i bit di un intero con segno e copia il bit più significativo nelle posizioni liberate a sinistra.
Esegui gratis nel browser
Scelga la larghezza, inserisca un intero decimale, esadecimale o binario con segno e indichi lo spostamento. Il risultato comprende valori decimali esatti e sequenze binarie completate alla larghezza scelta, senza dipendere dalla dimensione intera implicita di un linguaggio.
Scelga prima la larghezza con segno
Uno shift aritmetico è definito con precisione solo quando è nota la larghezza. Gli stessi bit possono indicare un valore positivo a una larghezza e negativo a un’altra, perché nel complemento a due il bit più significativo rappresenta il segno. Scelga da 2 a 1024 bit e fornisca un valore nell’intervallo ammesso. Il calcolatore rifiuta i valori fuori intervallo invece di troncarli. Usi il formato decimale per i numeri negativi oppure i prefissi 0x e 0b per confrontare registri e campi binari. La sequenza di ingresso viene completata alla larghezza selezionata, rendendo visibile ogni bit.
Comprenda l’estensione del segno
Uno shift logico inserisce sempre zeri a sinistra; quello aritmetico ripete il bit di segno: zero per valori non negativi e uno per valori negativi. Per i negativi, l’effetto numerico equivale a una divisione per una potenza di 2 arrotondata verso meno infinito: meno cinque spostato di una posizione dà meno tre. L’output contiene il risultato decimale, l’intera sequenza binaria e `sign_bit`, che indica il bit originale replicato.
Gestisca grandi spostamenti e interi esatti
Uno spostamento pari a zero lascia il valore invariato. Quando il conteggio raggiunge o supera la larghezza, rimane soltanto l’estensione del segno: zero per un valore non negativo e meno uno per uno negativo. Ciò evita il mascheramento del conteggio adottato da alcuni processori. I calcoli usano interi a precisione arbitraria. I risultati decimali sono stringhe perché JSON non rappresenta esattamente tutti gli interi a 64, 128 o 1024 bit. Li elabori con un tipo intero esatto.
Casi d'uso
Verificare istruzioni con segno
Confronti un emulatore, un compilatore o un processore con un’operazione a larghezza esplicita.
Correggere formati binari
Controlli il comportamento di un campo con segno durante operazioni che preservano il segno.
Spiegare il complemento a due
Mostri le sequenze complete insieme alle interpretazioni decimali esatte.
Domande frequenti
Che cosa fa uno shift aritmetico a destra?
Sposta i bit a destra e riempie le posizioni alte con copie del bit di segno originale.
Come differisce da uno shift logico?
Quello logico inserisce zeri; quello aritmetico inserisce il segno e preserva i valori negativi.
Quali formati di ingresso sono accettati?
Usi testo decimale con segno o i prefissi 0x per esadecimale e 0b per binario.
Che cosa accade se lo spostamento raggiunge la larghezza?
Il risultato è zero per un valore non negativo e meno uno per un valore negativo.
Perché i valori decimali sono restituiti come stringhe?
Le stringhe preservano interi esatti oltre l’intervallo numerico sicuro di JSON.
Quanto costa una chiamata API?
Ogni chiamata API costa $0.002. La versione browser usa 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/dev/arithmetic-shift-right \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"-42","width":8,"shift":3}'const res = await fetch("https://api.kit.forhosting.com/dev/arithmetic-shift-right", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "-42",
"width": 8,
"shift": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/arithmetic-shift-right",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "-42",
"width": 8,
"shift": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/arithmetic-shift-right", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"-42","width":8,"shift":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"-42","width":8,"shift":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/arithmetic-shift-right", 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": "-42",
"width": 8,
"shift": 3
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.arithmetic_shift_right",
"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. |