Zahlenüberlauf

Neue Frage »

Auf diesen Beitrag antworten »
NoIdea Zahlenüberlauf

hi,
ich hab folgendes probllem. wenn ich in c++ signed short int x=100000 definiere und später einfach so ausgeben lasse bekomm ich -31072 raus, da x ja nur werte zwischen -32768<= x<=32767 annehmen kann.
nun weiß ich aber nicht wie man theoretisch auf diesen wert kommt. hab einfach das komplement gebildet und auch vom betrag her das ergebnis bekommen. ich versteh jedoch nicht, warum das vorzeichen negativ ist.
ich hoffe einer hat ne idee.
 
Auf diesen Beitrag antworten »
Thomas

Wenn du x durchzählst, ist 32767+1 = -32768... dann zählst du von dort aus weiter bis 0 und dann weiter bis du wieder bei 32767 ankommst.. und bei 100.000 bist du dann bei -31072.
Auf diesen Beitrag antworten »
NoIdea

also fange ich an von 0 aus zu gehen bis meine 100000 "aufgebraucht" sind. und wie mach ich das jetzt rechnerisch. die komplementbildung ist ja eigentlich nichts anderes nur das ich dabei irgendwie nicht auf das vorzeichen komme. das komplement kann zwar als negativer wert aufgefasst werden, aber wenn ich jetzt sowas wie unsigned short int hätte, dann gäbe es ja keine negative zahl und ich wüsste nicht was ich machen sollte.
Auf diesen Beitrag antworten »
Thomas

Rechnerisch würde ich das ganze so machen (65536 = ein gesamter Durchlauf, 32768+1+32767 mal)

100000 - 2*65536 = -31072

Da Stopp im 2. Durchlauf.
 
 
Neue Frage »
Antworten »


Verwandte Themen