![]() |
Mit Über- und Unterläufen rechnen
Hallo zusammen,
ich habe folgende simple Aufgabe vor mir liegen und komme einfach nicht aufs richtige Ergebnis:
Code:
"unsigned int" ist 16 Bit groß, hat also einen Wertebereich von 0 - 65535. In der Klammer kommt es zum Unterlauf, da 20000 - 50000 negativ ist. Aber ich weiß nicht, wie man damit genau rechnet.
unsigned int a, b;
unsigned long result; b = 20000; a = 50000; result = 65536 + (b - a); Wie groß hier ein long-Datentyp ist, weiß ich nicht, aber da sollte es nicht zu einem Überlauf kommen. Könnt ihr mir sagen, wie man mit Unterläufen bzw. wenn es geht auch mit Überläufen rechnen kann? Einfache Dinge wie 65535 + 1 = 0 bekomme ich hin, aber sobald das so große Zahlen sind, ist mir das zu komplex. *g* Grüße |
Re: Mit Über- und Unterläufen rechnen
Zitat:
unsigned int ist ein Datentyp in C++. niedrigster Wert: 0, höchster Wert: 4.294.967.295. Länge: 32 Bit. hilft Dir das? |
Re: Mit Über- und Unterläufen rechnen
Hallo Kaki,
nö. *g* In meinem Fall ist ein "unsigned int" wie gesagt 16 Bit groß (Vorgabe, denn es geht um C und Mikrocontroller, doch das tut nichts zur Sache) Laut deiner Theorie würde dann 20000 - 50000 = 0 ergeben, wenn ich's richtig verstanden habe. Somit sollte "result" den Wert 65536 haben. Die Lösung ist jedoch 101072 Grüße Edit: Es wäre übrigens sinnvoll, nicht den ganzen Beitrag zu zitieren, sondern nur relevantes. Sonst muss man so viel scrollen. ;) |
Re: Mit Über- und Unterläufen rechnen
ich würde ne if-Abfrage einbauen, und dann das kleiner von dem größeren abziehen
|
Re: Mit Über- und Unterläufen rechnen
Du musst modulo 65536 rechnen: 20000 - 50000 = -30000 ist kongruent zu 35536. Danach geht es normal weiter.
|
Re: Mit Über- und Unterläufen rechnen
[OT]
Zitat:
[/OT] |
Re: Mit Über- und Unterläufen rechnen
Zitat:
|
Re: Mit Über- und Unterläufen rechnen
Zitat:
Ich finde die wirklich gut und weiß nun, dass ich zum negativen Wert den Maximalwert des Integers drauf addieren muss. Dankesehr. :thumb: Grüße Edit: ich hatte die falsche Person zitiert. |
Re: Mit Über- und Unterläufen rechnen
Zitat:
Zitat:
|
Re: Mit Über- und Unterläufen rechnen
Zitat:
Wenn du es mathematisch magst: Dein unsigned int ist ein Restklassenring. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz