comtel (Member)
Pro
Messaggi: 145
Iscritto: 08/04/2011
|
Salve ragazzi, per un esercizio di programmazione in C devo confrontare un numero scritto in forma SEGNO-ESPONENTE-MANTISSA con il suo valore iniziale. Ebbene per quanto riguarda il segno so che è il primo bit più significativo, per cui in un array di 32 elementi (quali i bit del numero floating-point), esso è bit[0], cosi come anche per l'esponente è facile risalire al numero dalla sequenza di bit. Quello che non mi spiego, e che mi ha mostrato un collega in pratica è questa funzione che calcola invece la mantissa:
Codice sorgente - presumibilmente C++ |
float Calc_Esp(char array[], int inizio, int fine) { int i; float numero=0.0f,peso=1.0f; for (i=inizio; i<=fine;i ++) { if(array[i]=='1') numero = numero+peso; peso = peso/2; } return numero; }
|
Perchè il peso ad ogni passo viene diviso per 2 ?
Ultima modifica effettuata da comtel il 24/08/2018 alle 17:09 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Semplicemente perché ogni bit pesa la metà del precedente. Però mi sa che state sbagliando qualcosa perché il bit 0 dovrebbe essere il meno significativo e non il contrario. Poi nel valore normalizzato per la mantissa il valore 1, è implicito e il segno non è in bit 0 ma nel più signigicativo
E infine, perché la funzione si chiama Calc_Esp se la usi per la mantissa?
Ultima modifica effettuata da nessuno il 24/08/2018 alle 20:51
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
comtel (Member)
Pro
Messaggi: 145
Iscritto: 08/04/2011
|
Postato originariamente da nessuno:
Semplicemente perché ogni bit pesa la metà del precedente. Però mi sa che state sbagliando qualcosa perché il bit 0 dovrebbe essere il meno significativo e non il contrario. Poi nel valore normalizzato per la mantissa il valore 1, è implicito e il segno non è in bit 0 ma nel più signigicativo
E infine, perché la funzione si chiama Calc_Esp se la usi per la mantissa? |
Innanzitutto ti ringrazio per la risposta.
Dal punto di vista del codice l'array bit di char viene riempito da sinistra verso destra, per cui bit[0] dovrebbe essere il bit più significativo. Il nome della funzione non l'ho dato io, ma un mio collega, che mi ha mostrato il suo codice (ci aiutiamo a vicenda in pratica). |
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Bit0 è il segno, poi un uno (costante) è sottinteso, poi c'è la mantissa e l'esponente è eccesso 127.
Chiamare fa funzione di conversione mantissa conversione esponente non è d'aiuto...
|
|
comtel (Member)
Pro
Messaggi: 145
Iscritto: 08/04/2011
|
Postato originariamente da TheDarkJuster:
Bit0 è il segno, poi un uno (costante) è sottinteso, poi c'è la mantissa e l'esponente è eccesso 127.
Chiamare fa funzione di conversione mantissa conversione esponente non è d'aiuto... |
Grazie mille per la risposta. Si, in effetti il nome della funzione è fuorviante.. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Bit 0 non è il segno state facendo confusione. Rispettate lo standard
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
...
Ultima modifica effettuata da nessuno il 26/08/2018 alle 12:28
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
comtel (Member)
Pro
Messaggi: 145
Iscritto: 08/04/2011
|
Postato originariamente da nessuno:
Bit 0 non è il segno state facendo confusione. Rispettate lo standard |
Lo so, la notazione non è quella standard, però è un esercizio basilare. Dal punto di vista della teoria è abbastanza chiara la cosa (per me). |
|