PDA

View Full Version : [C++]Chiarimento interi e troncamento


rnuzzo
01-10-2009, 13:36
Ciao a tutti,e' da un po di tempo che studio il c++ con l'aiuto di un libro dove ad un certo punto spiega la differenza tra 16 32 e 64 bit.Fin qui tutto chiaro.Dopo chiede perche in un sistema msdos a 16 bit il numero int = 92126 il risultato sara' troncato a ' 26590 '.Qualcuno puo spiegarmi il perche'?
Facendo 92126 - 2659 il risultato e' 65536 -1 che equivale ad un'unsigned short int di 16 bit.
Non riesco proprio a capire....:muro:

yorkeiser
01-10-2009, 14:13
Passerà di certo qualcuno più esperto di me sui binari utilizzati dal DOS, ma a rigor di logica mi pare logico (scusa il gioco di parole ;) ):
con 16 bit, il massimo intero (unsigned) rappresentabile è 65535. Assumi di aggiungerci uno per ottenere 65536: fai l'addizione ma non hai il carry (riporto) perchè sei già sui 16 bit, quindi resetti tutti i bit a 0 ottenendo il decimale 0. Quindi, proprio come 65536 "corrisponde" a 0 (65536-65536), così a 92126 corrisponde 26590 (92126-65536).

rnuzzo
01-10-2009, 14:46
Ti ringrazio molto!!:)