32bit x 32bit Multiplikation in C

Gast #454517
Lesenswert?

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
Gast #454528
Lesenswert?

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.
Gast #454533
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren