Facendo 92126 - 2659 il risultato e' 65536 che equivale ad un'unsigned short int di 16 bit.
Non riesco proprio a capire....
![Boh [boh]](http://www.megalab.it/forum/images/smilies/dntknw.gif)
rnuzzo ha scritto:Quello che voglio capire e' la relazione matematicache c'è...
M@ttia ha scritto:rnuzzo ha scritto:Quello che voglio capire e' la relazione matematicache c'è...
92126 mod 65536 = 2659, ovvero sottrai 65536 dal tuo numero tante volte, finché il risultato è compreso fra 0 e 65535
(vedila come un orologio, dove ogni 12 si riparte da zero: per un processore a 16 bit, ogni 2^16( =65536) si ricomincia da zero a contare (si dice che si ha avuto un overflow, ovvero ho sforato il massimo e quindi ricomincia a contare da zero come in un orologio)
Il numero viene visto come quel numero e basta, poi eventualmente si possono aggiungere al codice istruzioni addizionali per segnalare quando accade un qualsiasi overflow a run-time, ma questi poi sono dettagli che dipendono dall'implementazione, dal linguaggio, ecc. A priori un numero ottenuto con overflow o un numero già così di partenza sono uguali.Xero ha scritto:In questo caso il numero troncato viene visto come 26590 oppure c'è un carattere addizionale o qualcosa di simile che indica alla macchina che quel numero non è realmente 26590 ma 2^16+26590?
M@ttia ha scritto:Il numero viene visto come quel numero e basta, poi eventualmente si possono aggiungere al codice istruzioni addizionali per segnalare quando accade un qualsiasi overflow a run-time, ma questi poi sono dettagli che dipendono dall'implementazione, dal linguaggio, ecc. A priori un numero ottenuto con overflow o un numero già così di partenza sono uguali.Xero ha scritto:In questo caso il numero troncato viene visto come 26590 oppure c'è un carattere addizionale o qualcosa di simile che indica alla macchina che quel numero non è realmente 26590 ma 2^16+26590?
Ah sì certo, è che visto il calcolo che ha postato all'inizio:Zane ha scritto:ma la rappresentazione non dovrebbe essere comprensiva anche dei negativi? se non sbaglio, a meno che il dato non sia dichiarato come unsigned int, a 16 bit dovrebbe arrivare solamente fino a 32 767 (ovvero 65536/2-1 che è lo zero).
ho subito inteso che stessimo parlando di unsigned int. Nel caso dell'int invece, il primo dei 16 bit è dedicato al segno del numero (1=+, 0=- mi pare), pertanto il massimo numero rappresentabile (in valore assoluto) è 2^(16-1), ovvero 2^15 = 32768 (su un sistema a 16 bit).rnuzzo ha scritto:Facendo 92126 - 2659 il risultato e' 65536 che equivale ad un'unsigned short int di 16 bit.
Zane ha scritto:Ehm, faccio appello a tutta la mia memoria di calcolo numerico per fare una figura di cacca e chiedere: ma la rappresentazione non dovrebbe essere comprensiva anche dei negativi? se non sbaglio, a meno che il dato non sia dichiarato come unsigned int, a 16 bit dovrebbe arrivare solamente fino a 32 767 (ovvero 65536/2-1 che è lo zero).
Dico male?
Visitano il forum: Nessuno e 4 ospiti
megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising