RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
Carry, Overflow? Technik dahinter?
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Sonstiges
Autor Nachricht
Overflow
Gast





Beitrag Overflow Verfasst am: 03. Jun 2021 21:00    Titel: Carry, Overflow? Technik dahinter? Antworten mit Zitat

Meine Frage:
Habe ich das richtig verstanden:

Wenn man (z.B. in C) einen Integer definiert. Auf einem 16-Bit System.
Dann hat man einen Wertebereich von -32.768 bis 32.767.
Wird ein Wert eingegeben der nicht mehr innerhalb dieses
Werftenbereiches definiert ist, dann gibt den den Überlauf (Overflow)
und der Datenbereich wird verlassen, sprich:
Nach 32.767 kommt wieder die -32.768 und es geht von vorne los.

Bei einem unsigned int auf dem selben Betriebssystem hätte man einen
Wertebereich von 0 bis 65.535.
Beim Verlassen des Wertebereichs entsteht ein Übertrag (Carry).
Addiert man z.B. zu 65.530 die Zahl 10 hinzu, wäre der ausgegebene Wert
5.



Meine Ideen:
Ist das soweit richtig?
Wie kann man sich das technisch vorstellen?
Kann das gerade nur schwer begreifen und hoffe, es überhaupt irgendwie
verstanden zu haben...

Was wäre dann übrigens der bekannte Stack Overflow?
gnt
Gast





Beitrag gnt Verfasst am: 03. Jun 2021 22:13    Titel: Re: Carry, Overflow? Technik dahinter? Antworten mit Zitat

Overflow hat Folgendes geschrieben:
Ist das soweit richtig?

Ja.

Overflow hat Folgendes geschrieben:
Wie kann man sich das technisch vorstellen?

Die Schaltung ist eben so aufgebaut. Wenn man "per Hand" addiert, muss man immer den Übertrag zur nächsthöheren Stelle berücksichtigen. Im Prozessor ist das nicht anders, nur hat der eben eine begrenzte Bitanzahl je Datentyp. Wenn da nichts mehr "links" daneben geschrieben werden kann, wird dieses Flag gesetzt.

Overflow hat Folgendes geschrieben:
Was wäre dann übrigens der bekannte Stack Overflow?

Hier kannst Du nachlesen: https://de.wikipedia.org/wiki/Puffer%C3%BCberlauf
Kurz gesagt: Auf dem Stack legt die momentan ausgeführte Funktion die lokalen Variablen ab. Wenn dort zu viel hinein geschrieben wird, sei es durch einen Hackversuch, oder z.B. sehr viele rekursive Aufrufe einer Funktion, dann reicht der Speicher nicht mehr. Dann kann der danach liegende Speicher überschrieben werden.
Neue Frage »
Antworten »
    Foren-Übersicht -> Sonstiges