Hallo,
das "Bruchrechnen" habe ich in meinen Projekten auch verwendet. Der Bruch sollte dabei so weit wie möglich gekürzt werden. Auf möglichen Überlauf hat Peter(TOO) bereits hingewiesen. Zudem muss auch beim Teilen durch große Zahlen beachtet werden, dass aufgrund des ganzzahligen Teilens ohne Rest Genauigkeit verloren gehen kann.
22 Shifts im obigen Code brauchen ohne Barrel Shifter auch viele Takte. Das Schieben kann auch auf das nächste Vielfache von 8 Bit geschehen, der Zugriff kann dann auf die einzelnen Bytes erfolgen:
Grüße, BernhardCode://Vorraussetzung: Little Endian lsbyte0=*(((uint8_t*)(&variablemit32bit))+0); byte1=*(((uint8_t*)(&variablemit32bit))+1); byte2=*(((uint8_t*)(&variablemit32bit))+2); msbyte3=*(((uint8_t*)(&variablemit32bit))+3);
Lesezeichen