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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.