Calcolatore intero senza segno → con segno
255 su 8 bit è tutto a uno, quindi con segno vale −1: inserisca un valore senza segno e una larghezza da 2 a 53 bit per vedere la lettura in complemento a due, la sequenza di bit e se il bit alto è acceso. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- 255
- Bit
- 8
- Con segno
- -1
- Senza segno
- 255
- Binario
- 11111111
- Min
- -128
Quando Lei converte un intero senza segno in un tipo con segno alla stessa larghezza in bit, i linguaggi moderni non modificano i bit: li reinterpretano in complemento a due. Studenti, sviluppatori embedded e candidati a colloquio hanno bisogno di un modo rapido e deterministico per vedere quel mapping per qualsiasi larghezza da due a cinquantatré bit senza contare i residui a mano. L'overflow fuori da zero fino a due elevato alla larghezza meno uno viene rifiutato invece di un wrap silenzioso.
Come funziona la reinterpretazione da senza segno a con segno in complemento a due
Fissi una larghezza in bit w di almeno due. Come intero senza segno è un intero u da zero fino a due elevato a w meno uno. Quella sola regola spiega perché duecentocinquantacinque su otto bit diventa meno uno, perché centoventotto diventa meno centoventotto (il valore più negativo a otto bit) e perché centoventisette resta positivo centoventisette.
L'algoritmo non inverte mai i bit a mano: confronta u con due elevato a w meno uno (la soglia di mezza gamma), poi restituisce u invariato oppure sottrae il modulo completo due elevato a w. I valori devono restare nell'intervallo degli interi sicuri di JavaScript affinché ogni cifra resti esatta quando il risultato è serializzato come numero.
Le richieste che non entrano nell'intervallo senza segno della larghezza scelta — ad esempio duecentocinquantasei su otto bit — sono rifiutate con un messaggio chiaro che indica il massimo consentito, invece di avvolgere a zero e nascondere un errore di cast che studenti o note di firmware potrebbero fidare per sbaglio.
Casi d'uso
Compiti e laboratori di organizzazione dei calcolatori
Verifichi in che cosa si trasforma qualsiasi byte o parola senza segno sotto un cast con segno a larghezze 8/16/32 bit, inclusi il punto medio del bit alto e i casi tutti uni, rispetto a un unico oracolo condiviso.
Log di firmware e dump di protocollo
Reinterpreti dump di registri senza segno come delta di sensori con segno o offset a larghezza fissa rivedendo log esadecimali o decimali.
Domande frequenti
Perché 255 è uguale a −1 su 8 bit?
Con il bit alto attivo, il complemento a due definisce la lettura con segno come 255 − 256 = −1.
Quale intervallo deve rispettare value?
Value deve essere un intero non negativo in [0, 2^bits − 1]. I risultati con segno restano poi in [−2^(bits−1), 2^(bits−1)−1].
Quali larghezze di bit sono supportate?
Larghezze da 2 a 53 inclusi. Le larghezze comuni in aula sono 8, 16 e 32.
Quanto costa il calcolatore da intero senza segno a con segno?
Lo strumento del browser è gratuito e gira in locale.
Che cosa diventa 128 su 8 bit?
Diventa −128, il valore più negativo a 8 bit, perché il bit alto è acceso e al numero si sottrae 256. Invece 127 resta 127, dato che il suo bit alto è spento.
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/dev/unsigned-to-signed \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":255,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/dev/unsigned-to-signed", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 255,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/unsigned-to-signed",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 255,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/unsigned-to-signed", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":255,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":255,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/unsigned-to-signed", 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": 255,
"bits": 8
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.unsigned_to_signed",
"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
Un valore come duecentocinquantacinque memorizzato su otto bit è tutto uni; come uint8 vale duecentocinquantacinque, ma come int8 il bit alto è attivo e lo stesso schema significa meno uno. Questo calcolatore da intero senza segno a con segno accetta un valore non negativo e una larghezza in bit, verifica che il valore stia nell'intervallo senza segno di quella larghezza e restituisce la lettura con segno in complemento a due insieme allo schema di bit esatto e a un indicatore chiaro del bit alto. Le chiamate API riuscite usano il prezzo base pubblicato di $0.002 per elemento.
Come funziona la reinterpretazione da senza segno a con segno in complemento a due
Ogni schema di bit di lunghezza w può essere letto in due modi. Come intero con segno in complemento a due lo stesso schema è u quando il bit più significativo è a zero, e u meno due elevato a w quando quel bit alto è attivo. Zero resta sempre zero; lo schema di tutti uni diventa sempre meno uno a ogni larghezza. L'implementazione usa aritmetica intera esatta senza arrotondamento in virgola mobile, senza semi casuali, senza orologio di parete e senza chiamate di rete, così ingressi identici producono sempre lo stesso JSON.
Contratto di ingresso, forma della risposta e comportamento di errore
Controlli classici: value duecentocinquantacinque con otto bit mappa a signed meno uno e binary tutti uni; value centoventotto con otto bit mappa a signed meno centoventotto; e value quarantadue con sedici bit resta positivo quarantadue con zeri iniziali. Se deve codificare un intero con segno in una stringa di bit o decodificare una stringa di bit già disponibile, usi una pagina dedicata di convertitore di complemento a due invece di sovraccaricare questo contratto di reinterpretazione da senza segno a con segno. Invii con POST un corpo JSON con due campi obbligatori: value, un intero non negativo da reinterpretare, e bits, la larghezza di parola da due a cinquantatré. Value può arrivare come numero JSON o come stringa di cifre con un più iniziale opzionale; sono accettati gli alias u, unsigned, n e number. Bits può arrivare come numero o stringa di cifre; sono accettati gli alias width, bit_width, nbits e w. Campi mancanti, stringhe vuote, NaN, Infinity, valori frazionari, valori negativi, larghezze fuori da due a cinquantatré e valori maggiori di due elevato a bits meno uno falliscono con invalid_input e non sono addebitati. In caso di successo il corpo ripete value e bits, restituisce signed (la lettura in complemento a due), unsigned (lo stesso residuo non negativo), binary (esattamente bits caratteri di zero e uno, bit alto a sinistra), i booleani high_bit_set e is_negative, il min e max con segno legali per la larghezza, unsigned_max e method uguale a twos_complement_reinterpret. Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento; i fallimenti di validazione non consumano il saldo prepagato.
Dove i calcolatori da senza segno a con segno creano valore
La documentazione di firmware embedded e di protocolli elenca campi sensore memorizzati come dump senza segno nei log che vanno rilette come offset con segno o delta di temperatura a otto o sedici bit, così i revisori verificano il bit di segno a colpo d'occhio. Note di compilatori e runtime spiegano come C, Java e Rust convertono uint8 o uint16 nel tipo con segno corrispondente reinterpretando i bit; i tutor confrontano gli helper di cast degli studenti con un risultato con segno di riferimento per zero, il punto medio, il massimo senza segno e tutti uni. I corsi di informatica e progettazione digitale introducono il complemento a due quando gli studenti incontrano per la prima volta i registri con segno e la sorpresa che un byte grande senza segno possa significare un piccolo numero negativo sotto un cast con segno; un oracolo affidabile che restituisce il valore con segno, lo schema di bit e un indicatore del bit alto accelera le chiavi di risposta e le demo di laboratorio senza formule fragili di foglio di calcolo. Poiché questa capacità è un motore parse puro, il prezzo API è la base pubblicata di $0.002 per elemento riuscito e la validazione fallita non consuma saldo. Tratti la conversione bidirezionale da intero con segno a binario, i dump solo esadecimali, gli schemi di bit in virgola mobile IEEE e l'estensione di segno tra larghezze diverse come intenzioni di ricerca separate con pagine proprie, invece di allungare questo calcolatore da senza segno a con segno oltre il suo ambito onesto.
Casi di integrazione
Fixture di test per helper di cast
Generi valori con segno di riferimento e schemi di bit per test unitari di helper di cast del linguaggio senza calcolare a mano i residui di complemento a due.
Domande tecniche
Cosa significa passare da senza segno a con segno in complemento a due?
A larghezza fissa w, lo stesso schema di bit è o il valore senza segno u in [0, 2^w−1], o il valore con segno u se il bit alto è a zero, e u − 2^w se il bit alto è attivo. I bit non cambiano; cambia solo l'interpretazione.