Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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: