Re: Berechnung einer Auslastung in Prozent Kategorie: Programmierung (von André H. - 28.04.2003 13:01) | |
Als Antwort auf Re: Berechnung einer Auslastung in Prozent von Martin Binder - 28.04.2003 11:03
| |
Hallo Martin, Da liegts Du leider nicht ganz richtig. Was links vom = steht ist völlig egal und wird erst am Ende beachtet. Die Berechnung funzt nach dem Bsp. folgenderma�en: - Lade 600 auf den Stack - Lade 9 auf den Stack - Multipliziere beides miteinander und lade das Ergebnis auf den Stack - Lade 300 auf den Stack - Dividiere den letzen Stackeintrag mit dem vorletzten und lade das Ergebnis auf den Stack. - Lade 250 auf den Stack. - Multipliziere beides miteinander und lade das Ergebnis auf den Stack - Hole den letzten Wert vom Stack und speichere diese in "auslastung" Ein Stackeintrag hat immer Integer, egal, ob die Berechnung mit Byte oder Integer-Werten abläuft. Wenn man allerdings mit grö�eren Wertbereichen arbeiten will, mu� mind. eine betreffende Variabel im Term von diesem Typ sein. (z.B. long, belegt dann 2 Stackeinträge(=4 Byte)) Allerdings ginbt es bei dieser Berechnung ein anderes Problem, welches ich in meinem anderem Posting beschrieben habe. MfG André H. > Hallo Roman, > > > ... > > auslastung = 250 * (300 / (600 * 9)); > > ... > > In dem Prozessor wird immer Schritt für Schritt gereechnet > Klammern werden immer zuerst berechnet, > und der Wert links vom = bestimmt die Genauigkeit (Stellenzahl) in Deinem Fall also Byte: > > 1..auslastung = 600  (das geht schon mal nicht) > 2..auslastung = auslastung * 9 (auch das geht nicht) > 3..auslastung = 1 / auslastung > ( ...usw) > > Du musst erstmal Raum schaffen für den grö�ten Wert, indem du dafür Integer verwendest. > Dann in einem zweiten schritt kannst du wieder auf Byte zurückgehen, wenn das Ergebnis passt. > > Also schreib deine Berechnungen mit einer Integer - Variable, und zum Schluss > übergibst du das Ergebnis in eine Byte - Variable: > > integer a_int; > a_int = 250 * (300 / (600 * 9)); > auslastung = a_int; > > Wie schon vorhin beschrieben... > > Gru� Martin Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: |