mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 32bit x 32bit Multiplikation in C


Autor: nuess (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Franceso (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Franceso (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.