Ich benötige eine Routine zum Teilen zweier 16 Bit Zahlen durcheinander, habe bisher mit den Beispielen in der Codesammlung recht wenig anfangen können(8Bit)... Wahrscheinlich ist es gar nicht sonderlich schwer aber irgendwie komme ich nicht drauf. Vorab schon mal Danke für alle helfenden Beiträge -Hans
Eine Division ist doch eine fortgesetzte Subtraktion. Statt a:b wird solange b von a subtrahiert bis ein Überlauf entsteht. Nach jedem Subtraktionsvorgang musst du einen zuvor auf 0x00-gesetzten Zähler um 1 inkrementieren. Entsteht ein Überlauf (Carrybit gesetzt) war b schon kleiner als a. Also zum Schluß wird b mit a addiert und der Zähler um 1 dekrementiert. Im Zähler steht nun der Quotient aus a:b, und Sumationregister (von a - b)steht der Rest. Ein Nachteil dieser Softwaredivision ist erkennbar: Wenn du 65535 : 1 rechnest, dann wird die Summationsschleife 65535mal durchlaufen. Naja, je nach Clock könne das einige mSek. sein. Schönen Gruß Norbert
sorry, hab'n Fehler in Zeile 4. Dort muß es heißen: ......war a schon kleiner als b. Norbert
Hallo! die alte Subtraktions-Methode ist derbe langsam... schau besser mal hier: http://elm-chan.org/column_list_e.html ciao Christian
@Mike: Hast Du die 16/16 unsigned Routine schon mal ausprobiert?? Bei mir klappt das irgendwie nicht...
@hammer_c Vielen Dank, da ist eine brauchbare Routine bei, funktioniert auch einwandfrei... Gruß Hans
Ja, habe ich, diese Woche, geht. Ist mit Rest, bei Komma Zahlen mußt Du den Rest mal 10 und wieder Dividieren usw.. Mike
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.