Division durch 10 selber implementieren



  • N'Abend
    ich muss für ein Projekt die Division durch 10 selber implementieren.

    Genauer gesagt:
    Ich hab nur 8-Bit Integer zur Verfügung. Damit soll ich 32-Bit Integer "Simulieren". Die Operator + und - muss ich auch impementieren.
    Das mache ich indem ich dazu vier 8-Bit Integer nehme.
    Kein Problem an sich.
    Aber die müssen in Dezimal-Strings umgewandelt werden. Dafür brauche ich die Division durch 10, die auch den Rest wiedergibt.
    Wie implementiere ich die Division durch 10? Ich habe die Grundrechenoperatoren zur Verfügung, aber eben nur für 8-Bit Integer.


  • Mod

    Ziffernweise mit Rest, so wie in der Grundschule. Bloß dass man in der Grundschule Zahlen mit Ziffern von 0-9 dargestellt hat, du hingegen Ziffern mit den Werten 0-255 hast.



  • Zum Konvertieren ins Dezimalsystem muss man nicht notwendigerweise dividieren können.

    http://www.cs.uiowa.edu/~jones/bcd/decimal.html


  • Mod

    hustbaer schrieb:

    http://www.cs.uiowa.edu/~jones/bcd/decimal.html

    Rechnen durch an den Fingern abzählen. Das ist natürlich noch einfacher als Grundschule 🙄 .

    Bei der Aufgabenstellung würde ich jedoch vermuten, dass gleich die nächste Folgeaufgabe das Implementieren einer (vernünftigen) Division und Multiplikation sein wird.



  • Ist eine ziemlich blöde Aufgabe.

    Der Unterschied zwischen 8- und 32-bit besteht nur im darstellbaren Wertebereich. Die matematischen Operatoren + - * / bleiben unverändert. Suche nach geeigneten Algorithmen für höhere Wertebereiche, z.B. BigInteger oder so.



  • SeppJ schrieb:

    hustbaer schrieb:

    http://www.cs.uiowa.edu/~jones/bcd/decimal.html

    Rechnen durch an den Fingern abzählen. Das ist natürlich noch einfacher als Grundschule 🙄 .

    Bei der Aufgabenstellung würde ich jedoch vermuten, dass gleich die nächste Folgeaufgabe das Implementieren einer (vernünftigen) Division und Multiplikation sein wird.

    Vielleicht solltest du den Artikel mal ganz lesen (oder wenigstens bis zum Ende überfliegen). Da kommen noch "intelligentere" Methoden als das wiederholte Abziehen.

    Wobei ich nicht ganz verstehe was der "🙄" soll - vielleicht könntest du mir den erklären. Wieso kompliziert wenn's einfach auch geht?

    Die dort gezeigten "intelligenteren" Methoden sind soweit ich weiss auch schneller als die Division durch 10, speziell wenn man die Division durch 10 mit 8-Bit Instruktionen umständlich nachbilden müsste.


  • Mod

    hustbaer schrieb:

    SeppJ schrieb:

    hustbaer schrieb:

    http://www.cs.uiowa.edu/~jones/bcd/decimal.html

    Rechnen durch an den Fingern abzählen. Das ist natürlich noch einfacher als Grundschule 🙄 .

    Bei der Aufgabenstellung würde ich jedoch vermuten, dass gleich die nächste Folgeaufgabe das Implementieren einer (vernünftigen) Division und Multiplikation sein wird.

    Vielleicht solltest du den Artikel mal ganz lesen (oder wenigstens bis zum Ende überfliegen). Da kommen noch "intelligentere" Methoden als das wiederholte Abziehen.

    Wobei ich nicht ganz verstehe was der "🙄" soll - vielleicht könntest du mir den erklären. Wieso kompliziert wenn's einfach auch geht?

    Die dort gezeigten "intelligenteren" Methoden sind soweit ich weiss auch schneller als die Division durch 10, speziell wenn man die Division durch 10 mit 8-Bit Instruktionen umständlich nachbilden müsste.

    Tschuldige, ich hatte wirklich nur den ersten Teil gelesen. Und bei dem steht ja auch dabei,, dass der Algorithmus eher durch Einfachheit als durch Schnelligkeit glänzt.


Anmelden zum Antworten