Domanda

Anche se è semplice, non riuscivo a trovarlo attraverso Google.Dato che sappiamo che la rappresentazione del punto flottante supporta una gamma più ampia di numeri e l'operazione è più lenta rispetto agli interi pura.Inoltre sappiamo che come la manissa ed esponenti sono usati per rappresentare un punto fluido.Ma la mia domanda è che, ad esempio, in un sistema a 32 bit, S * B ^ E l'uscita è più lunga di 32 bit o 32 bit?(dove s= significazione, b= base, e= esponente)

È stato utile?

Soluzione

Il numero esatto di bit utilizzato per rappresentare la mantissa ed esponente dei numeri del punto flottante variano dalla CPU alla CPU, quindi la domanda è certamente dipendente dall'architettura.

C'è uno standard che è molto dominante: punto flowing IEEE e secondo < A href="https://stackoverflow.com/questions/2234468/do-any-real-world-cpus-not-use-ieee-754"> Questa questione così correlata tutte le principali cpus di cui è probabile Incontra oggi implementarlo, incluso IA32.

Secondo Wikipedia, il punto flottante IEEE richiede che almeno uno dei seguenti sia disponibile su qualsiasi implementazione:

    .
  • Binary32: 24 bit Manissa (incluso 1 bit) e 8 bit esponente
  • Binary64: 53 bit Manissa (incluso 1 bit) e 1 bit esponente

Supponendo che per 32 bit intendi il IA 32 famiglia (che è solo Una delle poche architetture che utilizza 32 bit), quindi il punto flottante registri può contenere fino a 80 bit , il che significa che, Binary32, Binary64 e un formato a 80 bit non IEC con 15 bit esponenti possono essere tutti supportati. Per differenziare le istruzioni a 32 bit e 64 bit La maggior parte degli assemblatori utilizza i modificatori della dimensione come QWORD o DWORD.

Inoltre, oltre alle implementazioni della CPU, le lingue possono anche richiedere la conformità al punto flottante IEEE. Nella lingua C, ad esempio, l'allegato 7 specifica che se il __STDC_IEC_599__ macro è definito automaticamente dal compilatore, quindi float è garantito per essere Binary32 e double Binary64. long double non è fissato per essere IEC, quindi potrebbe quindi utilizzare 80 bit su un arco IA32.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top