[gcc] Division durch Multiplikation, 16bit

Gast #656409
Lesenswert?

Moin,

Derzeit macht mir folgendes Problem Kopfzerbrechen:

Ein Wert soll mit einer Auflösung von 16bit von 0..Max eingestellt 
werden. Leider scheint der übliche Weg über Multiplikation und 
anschließendes Schieben hier zu hakeln:

uint32_t tmp= (MulH<<8) +MulL;  //bilde 16bit Multiplikator
X.Soll= (tmp * Max)>>16;

X.Soll und Max sind uint16_t.

Schon das Bilden des Multiplikators scheint zu mislingen, da MulH= 0xFF 
und MulL= 0xFF bereits tmp= 0xFFFFFFFF ergibt...

Für eine Idee wäre ich echt dankbar.

Viele Grüße,
Hendrik

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