Hallo leute! ich habe das problem, dass ich eine 32 bit zahl mit einer anderen 32 bit zahl multiplizieren und anschliessend dividieren muss. Ich arbeite auf einem NEC V850 controller mit einem GHS-Compiler in C. Ich kann keine float zahlen benutzen! Hat jemand eine idee oder sogar schon ne lösung wie ich sowas realisieren kann? Gruß nuess
Soweit ich sehe hat der NEC V850 eine 32-Bit CPU. Dann könntest Du also einfach z.B. "long int" oder "unsigned long int" Tatentypen verwenden und die Aufgabe dem Compiler überlassen.
hätte sogar eine lib dazu, für fixed point berechnungen. Habe gerade nachgeschaut, der compiler scheint long long zu kennen, probier es mal aus. int32 muldiv(int32 value, int32 mul, int32 div) { long long tmp; tmp=value; tmp*=mul; tmp/=div; return (int32) tmp; } Sollte es nicht funktionieren, d.h. der Compiler unterstützt nur +-, gibt es auch, dann mach high word und low word separat, und mach dann eine Zusammenführung der Ergebnisse.
Wenn du zwei 32bit Zahlen multiplizierst, dann kommt ein 64bit Ergebnis raus. long int ist meistens nur 32bit, long long ist 64, aber es ist nicht gesagt, daß der Compiler das auch unterstützt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.