Numero in virgola mobile: che cos'è? Semplicemente spiegato con esempi
In questo suggerimento pratico, ti mostriamo cos'è un numero in virgola mobile e in che modo differisce da un numero in virgola fissa.
Numero in virgola mobile: che cos'è?
Nell'informatica, il numero in virgola mobile viene spesso utilizzato per misurare dispositivi che dovrebbero funzionare con una certa precisione.
- Un numero in virgola mobile (o "numero in virgola mobile") è una rappresentazione di un numero usando la notazione esponenziale. In casi eccezionali, questo funziona solo approssimativamente. Puoi anche rappresentare il numero 1230000 con il numero 1.23 ⋅ 10⁶.
- L'1.23 si chiama "Mantissa". Il 10 è la "base" e il 6 è l '"esponente". Per inciso, un segno può anche essere aggiunto alla mantissa. Tuttavia, puoi anche applicare tutto al doppio sistema. Puoi anche rappresentare il numero 10101100 con il numero 1.0101100 ⋅ 2⁷. Il computer memorizza solo il segno, la mantissa e l'esponente.
- I computer di solito spostano la virgola avanti e indietro fino a quando non c'è solo un 1 davanti alla virgola. Quindi il PC deve solo salvare i decimali della mantissa e dell'esponente.
- Affinché l'esponente possa essere salvato come numero positivo, viene aggiunto un numero fisso, il cosiddetto bias. L'esponente più piccolo possibile del luogo prima del punto decimale (- bias) viene salvato come 0.
- Contrariamente al numero in virgola fissa, la virgola non si trova in un punto fisso in un numero in virgola mobile.
![](http://hackzl.com/img/internet/5249/gleitkommazahl-was-ist-das.webp)
Half, Float & Double - Codifica comune di numeri in virgola mobile
Ti sei sicuramente imbattuto in questi tre termini, soprattutto durante la programmazione con Arduino. Queste sono rappresentazioni standardizzate.
- Il tipo di dati "half" è un numero a 16 bit. Il bit più a sinistra è responsabile del segno. L'esponente ha 5 bit e la mantissa 10. Il bias utilizzato è 15. Poiché il primo bit della mantissa è (quasi) sempre 1, questo non viene salvato.
- Il tipo di dati "float" (o "singolo") è un numero a 32 bit. Anche qui, un po 'viene utilizzato per il segno. Tuttavia, l'esponente ha 8 bit (polarizzazione = 127) e la mantissa 23.
- Il tipo di dati "double" utilizza anche un bit per il segno. Qui, tuttavia, l'esponente ha 11 bit (bias = 1023) e la mantissa anche 52 bit. In totale, si tratta di 64 bit, ovvero 8 byte.
- Oltre a questi tre tipi di dati comuni, ce ne sono molti altri. Tuttavia, questi non sono usati principalmente perché la precisione di half, float e double è già abbastanza buona.
![](http://hackzl.com/img/internet/5249/gleitkommazahl-was-ist-das-2.webp)
Converti i numeri decimali in numeri in virgola mobile: come funziona
Infine, vorremmo mostrarti come è possibile convertire un normale numero decimale in un numero in virgola mobile.
- In questo esempio utilizziamo il numero decimale 18, 4. Il numero prima del punto decimale viene prima trasferito nel doppio sistema. Di conseguenza, dovresti ottenere (10010) ₂.
- Quindi devi convertire lo 0.4. Innanzitutto moltiplicare lo 0, 4 per 2. Si ottiene 0, 8 come risultato. Prendi nota del numero prima della virgola. In questo caso è uno 0. Quindi moltiplica lo 0, 8 per 2. Questa volta ottieni 1, 6 come risultato. Prendi nota del 1 e continua a calcolare con 0.6. Dopo un po 'noterai che il pattern si ripete (in questo esempio). Infine, annota tutti i numeri dall'alto verso il basso: 011001100110 ...
- Quindi aggiungi i numeri insieme: Aggiungi anche (⋅ 2⁰) in modo da ottenere 10010.01100110 ... ⋅ 2⁰. Quindi sposta la virgola fino a quando non c'è solo 1 davanti al punto decimale e cambia anche la potenza in modo appropriato. Di conseguenza dovresti ottenere 1.001001100110 ... ⋅ 2⁴, poiché hai spostato il punto decimale di 4 posizioni a sinistra. Questo passaggio è anche chiamato "normalizzazione".
- In questo esempio utilizziamo il tipo di dati "float". Quindi aggiungi il valore di bias appropriato al tuo esponente. È inoltre necessario convertire il risultato del calcolo 4 + 127 = 131 in un numero binario. Il numero 131 è il numero 10000011 nel doppio sistema.
- Ora puoi scrivere il numero in virgola mobile finito. Prima scrivi il bit per il segno. Poiché è un numero positivo, il primo bit è uno 0. Quindi devi scrivere 131. Il tutto si adatta perfettamente in questo caso, poiché questo numero richiede 8 bit e 8 bit sono disponibili per un float. Infine, devi annotare i primi 23 bit della mantissa, poiché la mantissa ha 23 bit disponibili per un float.
- Il numero in virgola mobile finito dovrebbe quindi essere il numero 01000001100100110011001100110011. Un po 'più chiaro è il numero 0 | 10000011 | 00100110011001100110011.
![](http://hackzl.com/img/internet/5249/gleitkommazahl-was-ist-das.webp)
Converti il numero in virgola mobile in numero decimale - Ecco come
Infine, vorremmo mostrarti come è possibile convertire nuovamente un numero in virgola mobile in un numero decimale. Per questo prendiamo il numero 1000001100100110011001100110011.
- Prima riempi il numero (fronte) con zeri fino a quando non ottieni un numero di 16, 32 o 64 bit. In questo caso è 01000001100100110011001100110011.
- La prima cifra indica il segno. Quindi il nostro numero è positivo.
- Quindi scrivere le 8 cifre successive (in questo caso) e sottrarre il bias. (10000011) ₂ = 131 → 131 - 127 = 4 → Quindi c'è "⋅ 2⁴" sul retro.
- Ora scrivi un "1" e poi tutti i numeri rimanenti, così come il "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Quindi spostare la virgola 4 posizioni a destra in modo da poter omettere "⋅ 2⁴": 10010.0110011001100110011
- Quindi, converti 10010 in un numero intero come al solito. Hai 18 anni.
- Ora devi convertire i decimali. La prima cifra dopo la virgola ha il valore 1: 2¹, la seconda cifra 1: 2² e così via. Aggiungi i valori e il numero prima della virgola indica il numero 18.3999996185302734375.
Nel prossimo suggerimento pratico ti mostreremo come convertire lettere ASCII in numeri binari.