Durch Null teilen

Gast
Steht im Datenblatt bzw. Programing Reference Manual. Manche CPUs werfen 
eine Exception bzw. bei manchen DSPs kann man konfigurieren ob ein 
Sättigung bei Überlauf eintreten soll. Manche Fließkommaeinheiten 
reagieren mit NAN (Not A Number weil theoretisch Unendlich bzw. nicht 
definiert).
Gast
Nullteiler schrieb:
> was macht ein Mikrocontroller, wenn man durch Null teilt?

Er explodiert mit einem gleißenden Lichtblitz und die darauf folgende 
Aschewolke verhüllt für Jahre die Sonne. Wegen so etwas sind damals auch 
die Dinos ausgestorben.
Gast
Rüdiger schrieb:
> Er explodiert mit einem gleißenden Lichtblitz und die darauf folgende
> Aschewolke verhüllt für Jahre die Sonne. Wegen so etwas sind damals auch
> die Dinos ausgestorben.

hoffentlich sterben leute die so unqualifiziert antworten bald aus ....
Gast
dolf schrieb:
> Rüdiger schrieb:
>> Er explodiert mit einem gleißenden Lichtblitz und die darauf folgende
>> Aschewolke verhüllt für Jahre die Sonne. Wegen so etwas sind damals auch
>> die Dinos ausgestorben.
>
> hoffentlich sterben leute die so unqualifiziert antworten bald aus ....

Ich fand die Antwort super :-)
Gast
Wer solche Fragen stellt und sich nicht selbst informieren kann oder 
will (Datenblätterlesen soll ja durchaus kein Geheimnis sein), muß auch 
mit solchen Antworten rechnen.

Ich fand sie ebenfalls klasse.

Früher gabs Arithmetik-Co-Prozssoren mit Metallkappen. Wahrscheinlich 
war genau diese Division der Grund dafür. So wurden die Schäden wohl 
minimiert.
chick schrieb:
> Früher gabs Arithmetik-Co-Prozssoren mit Metallkappen. Wahrscheinlich
> war genau diese Division der Grund dafür. So wurden die Schäden wohl
> minimiert.
Das waren Wartungsklappen. Wenn durch eine Null-Division etwas verloren 
ging, konnte man die Klappe öffnen und die Daten wieder reinsetzen.

mfg.
Moderator
chick schrieb:
> Wer solche Fragen stellt und sich nicht selbst informieren kann oder
> will (Datenblätterlesen soll ja durchaus kein Geheimnis sein), muß auch
> mit solchen Antworten rechnen.

Da die wenigsten Mikrocontroller über einen Divisionsbefehl verfügen,
führt das Lesen des Datenblatts nicht unbedingt zum Ziel. Stattdessen
sollte man sich die die Dokumentation der verwendeten Laufzeitbibliothek
zu Gemüte führen. Falls es aber um C-Programmierung geht, führt auch das
nicht unbedingt zum Ziel, da in C bei der Integerdivision durch Null das
Verhalten "undefined¹" (und nicht etwa "implementation defined") ist. 
Die
Nulldivision ist also in C auf jeden Fall zu vermeiden, und es besteht
kein Anspruch darauf, dass dieses Verhalten dokumentiert sein muss.

Bei Open-Source-Libraries kann man natürlich selber nachschauen, wenn
einen das wirklich interessiert.


¹) "undefined behavior" ist wörtlich zu nehmen und schließt prinzipiell
   auch die Explosion des Mikrocontrollers nicht aus ;-)
Kein Name schrieb im Beitrag #2614207
> Für IEEE 754 Gleitkommazahlen gibt es eine klare Antwort.
>
> Die Library muss +Unendlich liefern.

Sicher? Ich meine, die sollte NaN liefern. +unendlich halte ich für sehr 
schlecht weil in 50% der Fälle kreuzfalsch.
Moderator (Firma: Titel) Persönliche Seite
Simon S. schrieb:
> Man hat es bereits ausprobiert :-D
Woher weißt du, dass es hier im Thread ebenfalls um einen AVR geht?

BTW: es stimmt mich nachdenklich, wenn dort im Link ein
1
Erfahrener Benutzer
und
1
Roboter Experte
diese Frage für sich selbst noch nicht beantwortet hat:
1
Ist es überhaupt möglich einen AVR so zu "belasten" dass er heiß wird?
Yalu X. schrieb:
> ¹) "undefined behavior" ist wörtlich zu nehmen und schließt prinzipiell
>    auch die Explosion des Mikrocontrollers nicht aus ;-)

Nein, lieber Moderator!

Der Prozessor darf ausschließlich dann explodieren, wenn "darf nicht 
durch 0 dividieren" in den Absoluten Grenzwerten des Datenblatts 
aufgeführt ist.
Bernhard
Moderator Persönliche Seite
Bernhard R. schrieb:
> Der Prozessor darf ausschließlich dann explodieren, wenn "darf nicht
> durch 0 dividieren" in den Absoluten Grenzwerten des Datenblatts
> aufgeführt ist.

Nein.  Das C-Laufzeitsystem darf die Division durch 0 auch erkennen
und selbst dann, wenn der Prozessor einen Divisionsbefehl hat,
diesen dann gar nicht erst ausführen, sondern stattdessen den Befehl
HCF. :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.