Autor Thema: 16 Bittige Zahl durch 1024 teilen und zwei....  (Gelesen 6098 mal)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« am: 13. March 2008, 16:50 »
Hi,

ich möchte eine 16 Bittige Zahl in ax durch 1024 teilen und den quotient (mit zwei Stellen hinter dem Komma) in einer Zeichenkette kopieren.

also z.B wenn ax = 1200, dann soll die Zeichenkette folgenden Wert beinhalten:

Zeichenkette db " ", " ", " ", " ", "1", ",", "1", "7", 00h ;max. 65535,00

Geht das auch ohne floating point unit oder brauche ich die dafür?


danke!!!
In the Future everyone will need OS-64!!!

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 13. March 2008, 17:33 »
einfach den Divisionsrest mal 100 und noch mal durch 1024 dann solltest du die zweistellige zahl, die rauskommt, als deine nachkommastellen nehmen können.
d.h. wenn z.b. 1 rauskommt dann hast du ?,01
wenn der Rest der bei der zweiten Division dann größer als 511 ist musst du aufrunden.

wie du integer in nen String konvertierst wirst du wissen, oder?
« Letzte Änderung: 13. March 2008, 17:34 von MNemo »
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #2 am: 13. March 2008, 20:05 »
Das ist ein Argument.  :wink:

vielen dank!!!
In the Future everyone will need OS-64!!!

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 14. March 2008, 09:36 »
Moin

Der Vorschlag von MNemo nennt sich glaubich zumindest Festpunktarithmetik

und wieso bei einem Teiler der der Konvention 2^x entspricht eine Division anstossen? schieben würde auch genügen.

a / ( 2^x) = a >> x

Aber ob das alles bei heutigen PC prozessoren wirklich schneller ist?


Gruss

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #4 am: 14. March 2008, 21:00 »
Aber ob das alles bei heutigen PC prozessoren wirklich schneller ist?
Ich würde mal sagen es erleichtert es dem Prozessor die Pipeline auszunutzen, da es weniger Register nutzt als die Division. Das ist jetzt aber nur ins Blaue hinein geraten.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 15. March 2008, 12:27 »
Na ja, die Division gibt ein den Rest gleich mit aus, beim Verschieben muss ich mehrere Aktionen durchführen. Von daher dürfte das eine nicht unbedingt schneller sein als das andere.  :-P

bitmaster
In the Future everyone will need OS-64!!!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #6 am: 15. March 2008, 13:33 »
Mir gings eher darum wieviele Registerabhängigkeiten die beiden Befehle haben. Und da ist die Division klar im Nachteil, da sie 2 Register liest und 2 Register schreibt, ein Shift hingegen nur eins schreibt/liest.
Das heißt, dass andere Befehle die weiter hinten in der Pipeline sind evtl noch nicht ausgeführt werden können bzw. div noch nicht ausgeführt werden kann, da die zwei Register noch nicht gefüllt wurden.
Bei > 20 Pipelinestufen bei einem Pentium 4 könnte das schon einen Unterschied machen. Aber wie gesagt, dass ist geraten, da ich nicht viel Ahnung davon habe.

btw. ich glaube beide Befehle gehen seit langem in einem Taktzyklus, aber auch das habe ich jetzt nicht nachgeschaut.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #7 am: 15. March 2008, 14:05 »
Ist auch egal. Es funktioniert und das reicht mir erstmal. Noch mal danke an allen die mir dabei geholfen haben.

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen