Autor Thema: Gleitkommaberechnung  (Gelesen 5906 mal)

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« am: 26. March 2007, 23:48 »
Hi,

sagt mal, kann ich nicht eine einfach Division wie zum Beispiel 5 / 2 im OS benutzen, ohne auf die FPU zurückgreifen zu müssen?
Weil bei mir ergibt folgender Code immer Null:

  sGDTInfo->ProzentBelegt = (int)(((AnzEintr / MAX_DESCS)*100));

Kann dafür kein richtiges Ergebnis kommen, wenn ich nicht irgendetwas spezielles aktiviere?

Gruß Cheebi
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #1 am: 27. March 2007, 00:38 »
  sGDTInfo->ProzentBelegt = (int)(((AnzEintr / MAX_DESCS)*100));

Warum machst du es nicht einfach so:
  sGDTInfo->ProzentBelegt = (int)((AnzEintr * 100/ MAX_DESCS));
Die Klammern um AnzEintr / MAX_DESCS waren ja eh unnötig. Und da es alles Punkt-Operationen sind, kannst du sie ja in der Reihenfolge beliebig vertauschen.

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #2 am: 27. March 2007, 18:53 »
Hi,

ich weiß nu, was das Problem war und warum immer 0 als Ergebnis kam... Es ist nämlich nicht egal, ob ich die Punktrechenarten vertausche. Da ich die FPU nicht benutze, ist die Division in C trotzdem eine normale Division, weil sie ja später in ASM als DIV Befehl auftritt. Deshalb ist die Division durch MAX_DESCS erst nach der Multiplikation mit 100 durchzuführen, sonst kommt ein Wert < 1 raus, der dann einfach als 0 interpretiert wird. (Nachkommastellen werden gelöscht)
Und 0 * 100 ist nunmal 0; zumindest in meiner Region^^...

Aber ich habe in dieser Situation gleich nach FPU-Programming ausschaugehalten. Habe aber wenig (bis gar nichts) gefunden. Habt ihr Links zur FPU-Programmierung?

Gruß,

 Cheebi
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
Dieser Text wird unter jedem Beitrag angezeigt.

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #4 am: 30. March 2007, 00:29 »
hihi.... hab selbst was tolles gefunden:

http://www.homix-online.de/Tutorials/FPU1.php
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

 

Einloggen