Qual è la differenza tra una precisione singola e doppia precisione in virgola mobile operazione?

Qual è la differenza tra un virgola mobile a singola precisione di funzionamento e mobile e precisione doppia operazione?

Sono particolarmente interessato, in termini pratici, in relazione alle console di videogiochi. Per esempio, il Nintendo 64 hanno un processore a 64 bit, e se è così, allora vorresti dire che essa era in grado di virgola mobile a doppia precisione le operazioni? Può PS3 e Xbox 360 tirare fuori virgola mobile a doppia precisione le operazioni o solo in singola precisione e, in generale, utilizzare la doppia precisione, capacità fatto uso di (se esiste?).

  • Il fatto che la CPU è a 64-bit, di solito significa che la CPU è a 64-bit registri generali (cioè numero intero) e indirizzo di memoria di dimensione. Ma non dire nulla di matematica in virgola mobile. Per esempio, Intel IA-32 Cpu a 32 bit, ma lo fanno in modo nativo il supporto a doppia precisione carri allegorici.
InformationsquelleAutor tweetypi | 2009-04-29

 

11 Replies
  1. 195

    Nota: il Nintendo 64 dispone di un processore a 64 bit, tuttavia:

    Molti giochi hanno preso vantaggio del chip a 32-bit in modalità di elaborazione come la maggiore precisione dei dati disponibili con 64-bit tipi di dati non è in genere richiesto da giochi 3D, come pure il fatto che l’elaborazione di dati a 64 bit utilizza il doppio di RAM, cache, e la larghezza di banda, riducendo così le prestazioni complessive del sistema.

    Da Webopedia:

    Il termine double precision è qualcosa di un termine improprio, perché la precisione non è davvero il doppio.

    La parola doppia deriva dal fatto che un numero a precisione doppia utilizza il doppio del numero di bit come un normale numero a virgola mobile.

    Per esempio, se un numero a precisione singola richiede una a 32 bit, la sua precisione doppia contropartita sarà a 64 bit.

    I bit extra aumentare non solo la precisione, ma anche la gamma di grandezze che possono essere rappresentati.

    L’importo esatto da cui la precisione e la gamma di grandezze sono aumentati dipende dal formato che il programma utilizza per rappresentare i valori in virgola mobile.

    La maggior parte dei computer utilizzano un formato standard conosciuto come il formato a virgola mobile IEEE.

    Dal Standard IEEE per l’aritmetica in virgola mobile

    Precisione Singola

    IEEE virgola mobile a singola precisione rappresentazione standard richiede una parola a 32 bit, che possono essere rappresentati come numeri da 0 a 31, da sinistra a destra.

    • Il primo bit è il segno bit, S,
    • prossimi otto bit sono esponente bit, ‘E’, e
    • finale 23 bit sono frazione ‘F’:

      S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
      0 1      8 9                    31
      

    Il valore V, rappresentato dalla parola può essere determinato come segue:

    • Se E=255 e F è diverso da zero, allora V=NaN (Not a number”)
    • Se E=255 e F è pari a zero e S è 1, allora V=-Infinito
    • Se E=255 e F è pari a zero e S è 0, allora V=Infinito
    • Se 0<E<255 poi V=(-1)**S * 2 ** (E-127) * (1.F) dove “1.F”
      destinato a rappresentare il numero binario creato anteponendo F con un
      implicito leader 1 e un punto di binario.
    • Se E=0 e F è diverso da zero, quindi V=(-1)**S * 2 ** (-126) * (0.F). Questi
      sono “non normalizzati i valori”.
    • Se E=0 e F è pari a zero e S è 1, allora V=-0
    • Se E=0 e F è pari a zero e S è 0, allora V=0

    In particolare,

    0 00000000 00000000000000000000000 = 0
    1 00000000 00000000000000000000000 = -0
    
    0 11111111 00000000000000000000000 = Infinity
    1 11111111 00000000000000000000000 = -Infinity
    
    0 11111111 00000100000000000000000 = NaN
    1 11111111 00100010001001010101010 = NaN
    
    0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2
    0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5
    1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5
    
    0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)
    0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127) 
    0 00000000 00000000000000000000001 = +1 * 2**(-126) * 
                                         0.00000000000000000000001 = 
                                         2**(-149)  (Smallest positive value)
    

    Doppia Precisione

    IEEE doppia precisione in virgola mobile rappresentazione standard richiede una versione a 64 bit di parola, che possono essere rappresentati come numeri da 0 a 63, da sinistra a destra.

    • Il primo bit è il segno bit, S,
    • i prossimi undici bit sono esponente bit, ‘E’, e
    • finale 52 bit sono frazione ‘F’:

      S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      0 1        11 12                                                63
      

    Il valore V, rappresentato dalla parola può essere determinato come segue:

    • Se E=2047 e F è diverso da zero, allora V=NaN (Not a number”)
    • Se E=2047 e F è pari a zero e S è 1, allora V=-Infinito
    • Se E=2047 e F è pari a zero e S è 0, allora V=Infinito
    • Se 0<E<2047 poi V=(-1)**S * 2 ** (E-1023) * (1.F) dove “1.F”
      destinato a rappresentare il numero binario creato anteponendo F con un
      implicito leader 1 e un punto di binario.
    • Se E=0 e F è diverso da zero, quindi V=(-1)**S * 2 ** (-1022) * (0.F) Questi
      sono “non normalizzati i valori”.
    • Se E=0 e F è pari a zero e S è 1, allora V=-0
    • Se E=0 e F è pari a zero e S è 0, allora V=0

    Di riferimento:

    Lo Standard ANSI/IEEE 754-1985,

    Standard per Binario in virgola Mobile Aritmetica.

    • So che questo da origine, ma non mi piace la frase: “Il termine double precision è qualcosa di un termine improprio, perché la precisione non è davvero il doppio.” Singola e Doppia precisione in questi giorni sono abbastanza universalmente definito da IEEE, e come fai notare a precisione singola dispone di 23 bit della frazione e il doppio di 52 bit–che è praticamente il doppio della precisione…
    • L’operazione che è **
    • elevamento a potenza
    • 52/23 != 2 ergo non è “doppia precisione”
    • Si hanno ulteriori dettagli su denormalizzati valori in easy68k.com/paulrsm/6502/WOZFPPAK.TXT e anche stackoverflow.com/a/28801033/6309
  2. 30

    Ho letto un sacco di risposte, ma nessuno sembra spiegare correttamente dove la parola doppio viene. Mi ricordo molto bene la spiegazione data da un professore di Università ho avuto alcuni anni fa.

    Richiamando lo stile di VonC risposta, un singolo precisione rappresentazione in virgola mobile utilizza una parola di 32 bit.

    • 1 bit per il segno, S
    • 8 bit per il esponente, ‘E’
    • 24 bit per la frazione, chiamato anche mantissa, o coefficiente di (anche se solo 23 sono rappresentati). Let’s call it ‘M’ (per mantissa, preferisco questo nome come “frazione” può essere frainteso).

    Rappresentazione:

              S  EEEEEEEE   MMMMMMMMMMMMMMMMMMMMMMM
    bits:    31 30      23 22                     0
    

    (Solo per sottolineare, il bit di segno è l’ultimo, non il primo.)

    Un doppio precisione rappresentazione in virgola mobile utilizza una parola di 64 bit.

    • 1 bit per il segno, S
    • 11 bit per il esponente, ‘E’
    • 53 bit per il frazione /mantissa /coefficiente di (anche se solo 52 sono rappresentati), ‘M’

    Rappresentazione:

               S  EEEEEEEEEEE   MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
    bits:     63 62         52 51                                                  0
    

    Come si può notare, ho scritto che la mantissa ha, in entrambi i tipi, un po ‘ più di informazioni rispetto alla sua rappresentazione. Infatti, la mantissa è un numero rappresentato senza tutti i suoi non-significativo 0. Per esempio,

    • 0.000124 diventa 0.124 × 10-3
    • 237.141 diventa 0.237141 × 103

    Questo significa che la mantissa sarà sempre in forma

    0.α1α2…αi × bp

    dove b è la base della rappresentazione. Ma dal momento che la frazione è un numero binario, α1 sarà sempre uguale a 1, quindi la frazione può essere riscritto come 1.α2α3…αt+1 × 2p e iniziale 1 può essere implicitamente assunto, facendo spazio per un po ‘ (αt+1).

    Ora, è ovviamente vero che il doppio di 32, 64, ma che non è dove la parola deriva dalla.

    Il precisione indica il numero di cifre decimali che sono corretto, cioè senza alcun tipo di rappresentanza o di errore di approssimazione. In altre parole, indica quante cifre decimali si può sicuro uso.

    Detto questo, è facile stimare il numero di cifre decimali che possono essere utilizzati in modo sicuro:

    • precisione singola: log10(224), che è di circa 7~8 cifre decimali
    • doppia precisione: log10(253), che è di circa 15~16 cifre decimali
    • Interessante (+1) complemento alla mia vecchia risposta.
  3. 16

    Va bene, la differenza di base della macchina è che in doppia precisione utilizza il doppio del numero di bit come singolo. Nel solito attuazione,a 32 bit per il singolo, 64 bit per il doppio.

    Ma che cosa media? Se assumiamo che la IEEE standard, quindi un numero a precisione singola è di circa 23 bit di mantissa, e un massimo esponente di circa 38; una doppia precisione ha 52 bit per la mantissa e un massimo esponente di circa 308.

    I dettagli sono a Wikipedia, come al solito.

  4. 8

    Aggiungere a tutte le meravigliose risposte qui

    Prima di tutto float e doppio sono entrambi utilizzati per la rappresentazione dei numeri i numeri frazionari. Così, la differenza tra i due nasce dal fatto con quanta precisione si possono memorizzare i numeri.

    Per esempio: devo memorizzare 123.456789 si può essere in grado di memorizzare solo 123.4567 mentre altri possono essere in grado di memorizzare l’esatta 123.456789.

    Quindi, in sostanza vogliamo sapere quanto accuratamente possibile che il numero è memorizzato ed è ciò che noi chiamiamo di precisione.

    Citando @Alessandro qui

    La precisione indica il numero di cifre decimali che sono corretto,
    cioè senza alcun tipo di rappresentanza o di errore di approssimazione. In
    in altre parole, indica quante cifre decimali si può sicuro uso.

    Galleggiante con precisione possibile memorizzare circa 7-8 cifre della parte frazionaria, mentre
    Matrimoniale con precisione possibile memorizzare circa 15-16 cifre della parte frazionaria

    Così, galleggiante in grado di memorizzare raddoppiare l’importo della parte frazionaria. Che è il motivo per cui il Doppio è chiamato doppio galleggiante

  5. 6

    Come alla domanda “e’ Possibile che ps3 e xbxo 360 tirare fuori virgola mobile a doppia precisione le operazioni o solo in singola precisione e in generel utilizzare la doppia precisione, capacità fatto uso di (se esiste?).”

    Credo che entrambe le piattaforme sono in grado di doppia virgola mobile. La Cellula originaria del processore aveva solo 32 bit carri allegorici, lo stesso con l’hardware ATI che la XBox 360 è basato su (R600). Il Cell ha la doppia virgola in seguito, ma sono abbastanza sicuro che la PS3 non usa che chippery.

    • Attenzione a parlare di cosa c’è di sbagliato con questo?
    • Upboat per xbxo lol
  6. 4

    Fondamentalmente precisione singola aritmetica in virgola mobile si occupa 32 bit in virgola mobile, mentre in doppia precisione tratta 64 bit.

    Il numero di bit in doppia precisione aumenta il valore massimo che può essere memorizzato come pure aumentando la precisione (cioè il numero di cifre significative).

  7. 1

    Doppia precisione significa che i numeri di porta per due volte la parola di lunghezza per memorizzare. Su un processore a 32 bit, le parole sono di tutti e 32 i bit, raddoppia così sono a 64 bit. Che cosa questo significa in termini di prestazioni che di operazioni su numeri a precisione doppia prendere un po ‘ di più tempo per l’esecuzione. Così si ottiene una migliore gamma, ma c’è un piccolo colpo sulle prestazioni. Questo colpo è mitigato un po ‘ di hardware in virgola mobile unità, ma la sua ancora lì.

    N64 usato un MIPS R4300i a base di NEC VR4300 che è un processore a 64 bit, ma il processore comunica con il resto del sistema su un 32-bit di bus. Così, la maggior parte degli sviluppatori usato a 32 bit di numeri, perché sono più veloci, e la maggior parte dei giochi al momento, non hanno bisogno di ulteriori precisione (così hanno usato i carri non raddoppia).

    Tutti e tre i sistemi può fare a precisione singola e doppia galleggiante operazioni, ma potrebbe non a causa di prestazioni. (anche se praticamente tutto dopo il n64 usato una versione a 32 bit di bus…)

  8. 0

    Secondo ieee-754
    • Standard per la virgola mobile di archiviazione
    • 32 e 64 bit standard (precisione singola e doppia precisione)
    • 8 e 11 bit per l’esponente, rispettivamente,
    • Formati estesi (sia mantissa e esponente) per risultati intermedi

  9. 0

    Prima di tutto, float e double sono entrambi utilizzati per la rappresentazione dei numeri i numeri frazionari. Così, la differenza tra i due nasce dal fatto con quanta precisione si possono memorizzare i numeri.

    Per esempio: devo memorizzare 123.456789 si può essere in grado di memorizzare solo 123.4567 mentre altri possono essere in grado di memorizzare l’esatta 123.456789.

    Quindi, in sostanza vogliamo sapere quanto accuratamente possibile che il numero è memorizzato ed è ciò che noi chiamiamo di precisione.

    Citando @Alessandro qui

    La precisione indica il numero di cifre decimali corrette, cioè senza alcun tipo di rappresentanza o di errore di approssimazione. In altre parole, indica quante cifre decimali si può tranquillamente utilizzare.

    Galleggiante con precisione possibile memorizzare circa 7-8 cifre della parte frazionaria mentre Matrimoniale con precisione possibile memorizzare circa 15-16 cifre della parte frazionaria

    Così, il doppio grado di memorizzare il doppio della quantità di parte frazionaria di galleggiante. Che è il motivo per cui il Doppio è chiamato a doppio galleggiante

  10. 0

    Tutti hanno spiegato nel dettaglio e nulla potrei aggiungere di più. Però vorrei spiegare in Termini Profani o INGLESE semplice

    1.9 is less precise than 1.99
    1.99 is less precise than 1.999
    1.999 is less precise than 1.9999
    

    …..

    Una variabile, in grado di memorizzare o rappresentare “1.9” fornisce una precisione inferiore rispetto a colui che è in grado di rappresentare 1.9999. Queste Frazione può ammontare a una differenza enorme di calcoli di grandi dimensioni.

  11. -3

    Numero a precisione singola utilizza 32 bit, MSB essere il bit di segno, mentre il numero a precisione doppia utilizza 64 bit, MSB essere il bit di segno

    Precisione singola

    SEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)

    Doppia precisione:

    SEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)

Lascia un commento