Rappresentazione in virgola mobile dello 0

Messaggioda mklplo » 22/11/2020, 08:13

Salve. Ho iniziato laboratorio di programmazione 1 al corso di laurea di matematica e sto riscontrando non poche difficoltà. Uno dei dubbi più grandi che ho è probabilmente qualcosa di così scontato che non trovo la risposta in rete. Riguarda la rappresentazione in virgola mobile. Per rappresentare i numeri si specificano segno, esponente e mantissa, non riportando il bit prima della virgola che è sempre 1. Il dubbio che mi veniva è: come si rappresenta lo 0? Non esiste un esponente per 2 tale che un numero composto da soli 0 abbia un 1 come prima cifra prima della virgola. Sono sicuro che la risposta è banale ma non mi viene in mente niente (inoltre un'altra cosa che non ho capito è il perché dell'eccesso a 127 per l'esponente). Se non vi reca disturbo, potreste togliermi questo dubbio?
mklplo
Advanced Member
Advanced Member
 
Messaggio: 915 di 2272
Iscritto il: 21/02/2016, 16:05

Re: Rappresentazione in virgola mobile dello 0

Messaggioda feddy » 22/11/2020, 09:36

Ciao, hai provato a guardare il testo di riferimento?

La convenzione è che se ogni bit è $0$, indipendentemente dal segno, allora in numero è considerato $0$.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2751 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Rappresentazione in virgola mobile dello 0

Messaggioda mklplo » 22/11/2020, 11:45

Ciao. Grazie per la risposta. Il testo di riferimento non si trova e comunque è un testo di programmazione in C. Allora, da quello che ho capito per convenzione si adotta per convenzione che se tutti i bit sono 0 allora il numero è zero, tuttavia se io non considerassi solo la mantissa il numero sarebbe 1.0000000.... che sarebbe 1 se il segno è 0 e -1 se il segno è 1, giusto? Ora, così facendo io comunque non potrei rappresentare lo 0. Scusa l'insistenza ma veramente non riesco a capire questo punto.
mklplo
Advanced Member
Advanced Member
 
Messaggio: 916 di 2272
Iscritto il: 21/02/2016, 16:05

Re: Rappresentazione in virgola mobile dello 0

Messaggioda feddy » 22/11/2020, 13:49

Che vuol dire il testo di riferimento non si trova? Non si trova in rete? Non l'ha indicato il docente?

mklplo ha scritto:uttavia se io non considerassi solo la mantissa il numero sarebbe 1.0000000.... che sarebbe 1 se il segno è 0 e -1 se il segno è 1, giusto?


Infatti ho scritto indipendentemente dal segno. Cerca su google e troverai molte dispense a riguardo, anche in italiano.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2752 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Rappresentazione in virgola mobile dello 0

Messaggioda mklplo » 22/11/2020, 14:44

Nel senso che quello che il docente ha consigliato è introvabile sia su Amazon che in libreria e infatti ho preso uno che mi è stato consigliato sul forum per C.
Comunque, perdonami ma non sto capendo, se fosse indipendente dal segno non avrei di nuovo il problema della doppia rappresentazione dello 0 che il complemento a 2 aveva risolto?
mklplo
Advanced Member
Advanced Member
 
Messaggio: 917 di 2272
Iscritto il: 21/02/2016, 16:05

Re: Rappresentazione in virgola mobile dello 0

Messaggioda apatriarca » 23/11/2020, 11:06

Non è effettivamente possibile rappresentare lo zero in forma normale, ma non è vero che tutti i numeri nella rappresentazione floating point sono in questa forma. Almeno non nello standard IEEE 754. L'esponente più piccolo e quello più grande hanno in effetti un significato particolare. Quando viene usato l'esponente più piccolo i numeri non sono in forma normale e la mantissa viene usata così com'è, senza aggiungere un uno implicito. I numeri con questo esponente sono insomma nella forma \((-1)^S \times 0.M \times 2^{E_{min}}\). Lo zero diventa così rappresentabile1 e si hanno anche altre proprietà utili che non sto a descrivere in questo momento. I numeri con l'esponente maggiore sono invece riservati a "numeri speciali". Ci sono \(\pm \infty\) e i NaN (not a number).

Note

  1. In effetti ce ne sono due di zeri, uno positivo e l'altro negativo..
apatriarca
Moderatore
Moderatore
 
Messaggio: 5513 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Rappresentazione in virgola mobile dello 0

Messaggioda apatriarca » 23/11/2020, 11:56

Suppongo sia utile aggiungere qualche nota aggiuntiva sui due zeri. Un metodo per comprendere l'utilità dei due zeri è quello di pensare all'analisi matematica e in particolare ai limiti. Alcune funzioni matematiche hanno comportamenti diversi quando incontrano l'uno o l'altro zero perché hanno limiti destro e sinistro diversi nello zero. A volte è quindi utile distinguerli per ottenere il giusto risultato in alcuni calcoli numerici. Alcuni casi in cui il segno dello zero porta a risultati diversi:

1. Divisione per un numero.
2. La funzione che restituisce il segno.
3. La funzione arcotangente.
4. L'argomento di una funzione complessa.
5. La funzione logaritmo complessa.

Un codice che presenta tali funzioni si comporterà diversamente in sistemi in cui c'è un solo zero e in cui ce ne sono due.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5514 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Rappresentazione in virgola mobile dello 0

Messaggioda mklplo » 23/11/2020, 18:26

@apatriarca:grazie per aver risposto. Se ho capito bene, lo zero non si può rappresentare in forma normalizzata ma si rappresenta un valore molto piccolo che per convinzione si assume zero (perché l'esponente minore è speciale). Il fatto che abbia una doppia rappresentazione è utile per quando serve il segno per lo zero.
mklplo
Advanced Member
Advanced Member
 
Messaggio: 918 di 2272
Iscritto il: 21/02/2016, 16:05


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite