PDA

View Full Version : Rappresentazione dei numeri


Darker
27-02-2005, 22:51
Salve a tutti :)

Non sono sicuro che sia la sezione giusta... ma, ad occhio, mi sembra la più affine alla domanda.

Allora... Ho da rappresentare il numero Reale 2,5. Indistintamente dal linguaggio di programmazione utilizzato, a livello di stringa di bit, il numero (con la convenzione fixed point) sarà scritto come ...010.1 che equivale, appunto, a 2+0.5.

La domanda, anzi, le domande sono:

1) Supponendo che il numero sia rappresentato su 32bit: 1 per il segno, n per gli interi (a sx del punto) ed m per i frazionari (alla dx del punto), a quanto ammontano convenzionalmente n ed m?

2) Come fa l'elaboratore a scegliere tra la convenzione fixed point e la floating point? cioè... in base a cosa opera tale scelta? Dipende dal linguaggio di programmazione che ne adotta di default solo una (e magari lo si forza ad adottare l'altra con qualche istruzione)? Se si, C utilizza la convenzione a virgola mobile, giusto?

Grazie mille a tutti :)

cionci
28-02-2005, 06:31
La rappresentazione dei numeri può dipendere sia dal calcolatore che dal linguaggio...ad esempio ci potrebbero benissimo essere linguaggio che utilizzano (o hanno utilizzato) numeri fixed point...
In generale si sceglie la rappresentazione dei numeri con la vorgola concorde con quella del calcolatore che dovrà far girare il programma...

lombardp
28-02-2005, 07:32
Originariamente inviato da Darker
La domanda, anzi, le domande sono:

1) Supponendo che il numero sia rappresentato su 32bit: 1 per il segno, n per gli interi (a sx del punto) ed m per i frazionari (alla dx del punto), a quanto ammontano convenzionalmente n ed m?


I PC dovrebbero usare il formato IEEE754, se fai un search su Google lo trovi facilmente.


2) Come fa l'elaboratore a scegliere tra la convenzione fixed point e la floating point? cioè... in base a cosa opera tale scelta?

L'elaboratore non fa nessuna scelta, è il programma che decide come trattare i dati. Mi spiego meglio: dato un numero a 32bit presente in memoria, per l'hardware di fatto non ha nessuna connotazione. Sarà il programma a trattarlo o come intero o come numero in virgola mobile.

cionci
28-02-2005, 07:34
Originariamente inviato da lombardp
I PC dovrebbero usare il formato IEEE754, se fai un search su Google lo trovi facilmente.
E' anche per i numeri in virgola fissa ?

Darker
28-02-2005, 12:38
L'IEEE754 dovrebbe essere solo per il floating point. Lo standard prevede 1 bit per il segno, 23 per la mantissa e 8 per l'esponente.
Per i fixed point non ho trovato nulla... so di sicuro che 1 è per il segno (quello di peso maggiore) ma, gli altri?

Grazie a tutti per le risposte :)

cionci
28-02-2005, 12:56
Che io sappia non c'è uno standard...
Anzi probaiblmente non vengono rappresentati in modulo e segno...ma in complemento a 2 in modo da poterli usare con le normali operazioni della ALU...

Darker
28-02-2005, 13:12
Si, in complemento a due vengono rappresentati quelli senza la parte frazionaria, ossia gli interi.

Le rappresentazioni sono:

INTERI

- modulo e segno
- complemento ad 1
- complemento a 2

FRAZIONARI

- Virgola fissa
- Virgola mobile

Dietro ognuno c'è uno standard... è che io non riesco a trovare informazioni sullo standard in virgola fissa :\

cionci
28-02-2005, 13:19
Ripeto...i numeri in virgola fissa puoi rappresentarli sempre in complemento a 2...per poter usare direttamente la ALU nelle operazioni...

Le posizioni prima o dopo la virgola non sono fisse...le puoi decidere a seconda delle situazioni...

Darker
28-02-2005, 13:59
ahhh, ho capito! :D

Grazie mille! :D