2013-07-19 18 views
8

Sono curioso di sapere perché l'IEEE chiama una precisione a virgola mobile a 32 bit singola precisione. Era solo un mezzo di standardizzazione, o "single" in realtà si riferisce a un singolo "qualcosa".Perché il galleggiante è "a precisione singola"?

È semplicemente un livello standard? Come in, livello di precisione 1 (singolo), livello di precisione 2 (doppio) e così via? Ho cercato dappertutto e ho trovato molte informazioni sulla storia dei numeri in virgola mobile, ma nulla che risponda alla mia domanda.

+4

La mia ipotesi è che abbia radici nell'hardware, con alcuni sistemi con registri a 32 bit. Quindi un galleggiante "a precisione singola" si adatterebbe in un registro, mentre un galleggiante "a doppia precisione" richiederebbe due registri. Ma è solo una supposizione: sarei interessato a vedere quale sia la vera risposta. –

+0

Upvoting perché questa è stata una domanda divertente. –

+2

Occupa una parola a 32 bit e lo fa su architetture di parole classiche come S/360. Su altre architetture potrebbe essere diverso. (Ad esempio, su IBM 70xx occupava una parola di 36 bit). "Double", ovviamente, occupa due parole. –

risposta

7

Sulla macchina su cui stavo lavorando in quel momento, un galleggiante occupava un singolo registro a 36 bit. Un doppio occupato due registri a 36 bit. L'hardware aveva istruzioni separate per operare sul registro 1 e 2 versioni di registro del numero. Non so per certo che è da lì che viene la terminologia, ma è possibile.

+0

Come dispositivi di comando, Bell Labs (sede di Unix & C) aveva diverse macchine della stessa famiglia. –

+3

Quindi internet è il posto meraviglioso che è, ho appena trovato un'immagine della guida tascabile in linguaggio assembly per quel sistema: http://www.trailingedge.com/misc/GCOS-GMAP-PocketGuide.pdf Noto che in lì le operazioni con due registri hanno una "D" iniziale per il doppio. il FAD è un addizione flottante a precisione singola, DFAD è un additivo flottante a doppia precisione. Sì, usano la terminologia "doppia". –

+0

La più vecchia macchina commerciale che ho trovato che supportava numeri "scientifici" era la serie IBM 700/7000. Il 7094 introdusse numeri scientifici "a doppia precisione". http://en.wikipedia.org/wiki/IBM_700/7000_series –

0

Penso che si riferisca semplicemente al numero di bit utilizzati per rappresentare il numero in virgola mobile, dove la precisione singola utilizza 32 bit e la precisione doppia utilizza 64 bit, vale a dire il doppio del numero di bit.

0

La terminologia "double" non è del tutto corretta, ma è abbastanza vicina.

Un float a 64 bit utilizza 52 bit per la frazione anziché i 23 bit utilizzati per la frazione in un float a 32 bit - non è realmente "double", ma utilizza il doppio dei bit totali.

La risposta a this question è molto interessante - dovresti dargli una lettura.

+0

In realtà l'ho letto prima di postare.Alcune informazioni interessanti di sicuro, ma niente che risponda alla mia domanda. :) –

+0

E uno dei vantaggi che la gente di GE/Honeywell ha rivendicato per il nostro processore non solo aveva 72 bit di precisione (2X36), ma disponevamo anche di un registro esponenziale a 8 bit separato, quindi la nostra doppia precisione era doppia. –

+0

La differenza risale a ben prima che il formato float IEEE fosse inventato. Alla fine degli anni '60 le macchine IBM 70xx avevano i formati float 36 e 72 bit, e IBM S/360 aveva i formati float a 32 e 64 bit. DEC aveva il suo, ma sono ragionevolmente sicuro che fossero sia single che double. (E penso che alcune architetture siano quadruplicate.) Sto cercando di ricordare cosa abbia avuto la serie CDC 6xxx a 60 bit, ma penso che abbia sia il singolo che il doppio. Questi erano sempre noti come "precisione singola" e "doppia precisione". –

1

Oltre alla vista hardware, sulla maggior parte dei sistemi è stato utilizzato il formato a 32 bit per implementare il tipo "reale" di Fortran e il formato a 64 bit per implementare il tipo "doppia precisione" di Fortran.

Problemi correlati