Da decimale a virgola fissa
Trasformi un decimale nell'intero memorizzato in formato Q.n a virgola fissa: 0,1 con 8 bit frazionari memorizza 26, che in realtà vale 0,1015625, con un errore di 0,0015625. Pensato per firmware, DSP e FPGA. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- 0,1
- Bit frazionari
- 8
- Arrotondamento
- Nearest
- Formato Q
- Q.8
- Scala
- 256
- Risoluzione
- 0,00390625
Chi converte una costante di progetto, un coefficiente di filtro o una lettura di sensore ha bisogno dell’intero memorizzato, dell’errore di ricostruzione dopo l’arrotondamento e della risoluzione due alla meno n — non di un dump esadecimale di un float. Questo convertitore da decimale a virgola fissa accetta un valore decimale reale e un conteggio n di bit frazionari, moltiplica per due alla n, lo proietta su un intero con una modalità di arrotondamento documentata e restituisce il codice memorizzato, il reale ricostruito, l’errore di arrotondamento con segno e l’unità nell’ultimo posto di quella griglia Q.n.
Che cosa significa il formato Q e come si forma l’intero memorizzato
Il formato Q, spesso scritto Q.n o Qn, è la convenzione usata negli header Texas Instruments, in ARM CMSIS-DSP e in innumerevoli toolchain FPGA per un numero binario in virgola fissa con n bit a destra del punto binario implicito. Il valore reale rappresentato da un intero memorizzato I è I diviso per due alla n, così il passo della griglia — la risoluzione, o unità nell’ultimo posto di quel formato — è esattamente due alla meno n.
Codificare un decimale x significa quindi calcolare x per due alla n e arrotondare a un intero; decodificare è una sola divisione per la stessa scala. Ogni valore rappresentabile condivide lo stesso passo assoluto, ed è per questo che i codec audio, i loop di controllo motori e le tabelle di consultazione lo preferiscono quando serve un arrotondamento deterministico e moltiplicazioni-accumulazioni intere economiche.
Frasi di ricerca come convertitore da decimale a virgola fissa, convertitore formato Q, convertitore Q15 e convertire un float in Q31 descrivono esattamente questo lavoro: prendere un decimale umano, scegliere n e rileggere l’intero memorizzato più quanto l’arrotondamento ha spostato il valore. Quelle sono intenzioni di ricerca diverse, coperte da altri strumenti.
Un controllo classico è il decimale un decimo con otto bit frazionari: la scala è duecentocinquantasei, l’arrotondamento nearest memorizza ventisei, il valore ricostruito è ventisei su duecentocinquantasei, e l’errore di arrotondamento con segno è la differenza rispetto a un decimo — esattamente il triplo che questa pagina è fatta per mostrare.
Dove un convertitore in formato Q merita il proprio spazio
Gli autori di firmware usano un convertitore da decimale a virgola fissa quando incollano un tap di filtro, un guadagno PID o una conversione di unità in un header e hanno bisogno dell’intero esatto che occuperà una variabile Q15 o Q31. I banchi FPGA e HDL hanno bisogno dello stesso numero perché lo stimolo del testbench coincida con il datapath RTL che non vede mai un float.
Gli strumenti di gioco e audio convertono campioni normalizzati e pesi di animazione su una griglia fissa prima di impacchettarli in un asset binario, e vogliono l’errore di arrotondamento stampato accanto al codice così un artista vede se otto bit frazionari bastano. Le aule che insegnano l’aritmetica dei calcolatori hanno bisogno di un oracolo deterministico che mostri insieme risoluzione ed errore, invece di un «moltiplichi per duecentocinquantasei e arrotondi» a occhio.
Casi d'uso
Costanti di firmware e tap DSP
Trasformi un decimale di progetto nell’intero Q15 o Q.8 che appartiene a un header e tenga l’errore di arrotondamento accanto al codice memorizzato per la revisione.
Banchi di prova FPGA e HDL
Generi lo stesso stimolo in virgola fissa che vedrà l’RTL, con una risoluzione esplicita di due alla meno n così i scoreboard tollerano un ulp.
Controlli di aritmetica in aula
Mostri agli studenti l’intero memorizzato, il reale ricostruito e l’errore con segno per qualsiasi n, compreso il classico esempio di un decimo, che non è esatto in binario.
Domande frequenti
Qual è la risoluzione di un numero Q.n?
La risoluzione è esattamente 2^-n: il passo tra due interi memorizzati adiacenti.
Perché un decimo non può essere memorizzato in modo esatto?
0.1 non è un razionale diadico. Con otto bit frazionari l’intero memorizzato più vicino è 26, che si ricostruisce come 26/256 = 0.1015625.
Come si converte un decimale in Q15?
Scelga 15 bit frazionari. Lo strumento moltiplica il decimale per due elevato alla 15, lo arrotonda a un intero e mostra il codice memorizzato, il valore che rappresenta davvero e l'errore di arrotondamento, pronti da incollare nel firmware.
Quanti bit frazionari posso usare al massimo?
Fino a 52. Il numero deve essere intero, da 0 a 52, e se il valore moltiplicato per due a quella potenza esce dall'intervallo degli interi sicuri, la conversione viene rifiutata invece di perdere in silenzio i bit bassi.
Quale modalità di arrotondamento conviene scegliere?
Quella predefinita è al più vicino, con i casi a metà che si allontanano dallo zero. Ci sono anche il troncamento verso lo zero, l'arrotondamento per difetto e per eccesso: scelga quello usato dal suo firmware o circuito, così l'intero memorizzato coincide.
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/decimal-to-fixed-point \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":0.1,"fractional_bits":8}'const res = await fetch("https://api.kit.forhosting.com/dev/decimal-to-fixed-point", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 0.1,
"fractional_bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/decimal-to-fixed-point",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 0.1,
"fractional_bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/decimal-to-fixed-point", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":0.1,"fractional_bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":0.1,"fractional_bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/decimal-to-fixed-point", 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": 0.1,
"fractional_bits": 8
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.decimal_to_fixed_point",
"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.
Limiti
max_fractional_bits | 52 |
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
Il firmware embedded, i nuclei DSP, i datapath FPGA e i motori di gioco memorizzano ancora molti segnali come interi in virgola fissa in formato Q, anziché come float IEEE-754: un numero scelto di bit sta a destra di un punto binario implicito, così ogni intero memorizzato è un multiplo di una risoluzione fissa.
Che cosa significa il formato Q e come si forma l’intero memorizzato
Non è virgola mobile IEEE-754: non c’è campo esponente, né uno leader nascosto, né underflow graduale. Questo endpoint implementa quel contratto e nient’altro. Non emette macro C, non impacchetta una parola macchina completa con una larghezza di bit interi scelta a meno che Lei non interpreti da sé l’intero memorizzato, e non converte in schemi di bit IEEE-754.
Contratto di ingresso, modalità di arrotondamento e campi della risposta
Campi assenti, stringhe vuote, valori non finiti, un n non intero o un n fuori da zero a cinquantadue falliscono anch’essi, e quei fallimenti non vengono fatturati. Se il prodotto di value e due alla n esce dall’intervallo degli interi sicuri, l’attività viene rifiutata invece di perdere in silenzio i bit bassi. Invii un corpo JSON con due campi obbligatori e una modalità opzionale. value è il decimale finito da codificare; può arrivare come numero JSON o come stringa numerica, e gli alias decimal e number sono accettati. fractional_bits è l’intero n in Q.n, da zero a cinquantadue inclusi, così che due alla n resti un intero sicuro esatto di JavaScript; gli alias includono frac_bits, n e q. rounding è opzionale e il valore predefinito è nearest, cioè metà allontanandosi da zero — la convenzione della maggior parte delle note DSP, e non la stessa di JavaScript Math.round, che manda i pareggi verso più infinito. Le altre modalità documentate sono toward_zero (troncare il prodotto scalato), floor (verso meno infinito) e ceil (verso più infinito); qualsiasi altro token fallisce con invalid_input. In caso di successo il corpo riecheggia value e fractional_bits, nomina la modalità di arrotondamento, indica q_format come Q.n e restituisce scale (due alla n), resolution (due alla meno n), stored (il codice intero), stored_hex (hex in magnitudine con segno), reconstructed (stored su scale), rounding_error (reconstructed meno il valore originale), abs_error, un booleano exact quando l’errore arrotondato è zero, e una breve stringa di formula. Abbini la risposta al Suo controllo di larghezza di parola se deve sapere se stored entra in un registro con segno a sedici o trentadue bit; questo endpoint non assume una larghezza totale di bit, quindi la forma hex è magnitudine con segno, non complemento a due di un contenitore nascosto.
Dove un convertitore in formato Q merita il proprio spazio
Poiché l’implementazione è parse di livello A puro, ogni chiamata riuscita costa la tariffa base pubblicata $0.002 senza token di modello né rete in uscita; una convalida fallita non consuma il saldo. Quando l’intento di ricerca è lo schema hex IEEE-754 di un float, usi uno strumento di schema di bit in virgola mobile; quando l’intento è un intero Q.n con il suo errore e la sua risoluzione, questo è il contratto.
Domande tecniche
Come si converte un decimale in un intero in virgola fissa in formato Q?
Invii un value finito e un fractional_bits intero n da 0 a 52. L’API restituisce stored = round(value × 2^n), più reconstructed, rounding_error e resolution 2^-n.
Quale modalità di arrotondamento conviene usare?
nearest (il valore predefinito) è metà allontanandosi da zero, la scelta usuale in DSP. toward_zero tronca, floor va verso −∞ e ceil verso +∞. La modalità scelta è ripetuta nella risposta.
Quanto costa il convertitore da decimale a virgola fissa?
Lo strumento del browser è gratuito. Le richieste API usano il saldo KIT prepagato a $0.002 per chiamata riuscita; un ingresso non valido non viene fatturato.