Dezimalzahl zu Dualzahl mit Komma



  • Ich versuche mal zu Antworten ohne die Lösung direkt zu geben.

    Du kannst also Ganzzahlen umrechnen, dann rechne doch eine Ganzzahl um und verschiebe dann das Komma.
    Versuche zuerst mal etwas wie 5.75 umzurechnen, dann solltest du sehen wie es geht.
    Etwas detaillierter: Mit was musst du 5.75 multiplizieren, dass es im binaersystem eine Ganzzahl ist? Dann kannst du im Zehnersystem mit dieser Zahl multiplizieren und die resultierende Ganzzahl normal ins Binärsystem uebertragen. Dort musst du dann nur noch das Komma verschieben.



  • Um aus 5,75 eine Ganzzahl zu machen, müsste ich sie mit 4 multiplizieren. Dann würde ich 23 rausbekommen, oder in dual 10111. Wenn ich dann das Komma verschieben würde, bekäme ich 101,11 raus. Da die 11 aber für dezimal 3 steht, vermute ich, dass es falsch ist.



  • Nein, das ist korrekt 🙂
    Du kannst auch sagen, dass die erste stelle 1/2, die zweite 1/4 ist. 1/2 + 1/4 = 0.75 😉



  • FreakY<3Cpp schrieb:

    Um aus 5,75 eine Ganzzahl zu machen, müsste ich sie mit 4 multiplizieren. Dann würde ich 23 rausbekommen, oder in dual 10111. Wenn ich dann das Komma verschieben würde, bekäme ich 101,11 raus.

    Bis dahin sieht's stimmig aus.

    Da die 11 aber für dezimal 3 steht, vermute ich, dass es falsch ist.

    Und wo ist jetzt das Problem? Du mußt bei deiner Vermutung noch die Stellenwerte berücksichtigen - und da 3/4==0,75 ist, ist doch alles in Ordnung 😉



  • Ah okay, ergibt Sinn.
    Aber mit 132,2 habe ich jetzt mein Problem.
    132,2 muss ich mit 5 multiplizieren, dass ergibt 661.
    Bei 5,75 konnte ich die 5 noch mit 101 bei 10111 erkennen,
    da aber
    132 = 10000100
    661 = 1010010101
    ergibt, wüsste ich jetzt nicht weiter.
    Scheinbar übersehe ich etwas.



  • 0,2 kannst du nicht exakt als Binärzahl darstellen (aus den selben Gründen, warum du 1/3 nicht exakt als Dezimalzahl aufschreiben kannst). Das ergibt einen periodischen Wert.
    Der Ansatz dazu ist, so oft mit 2 zu multiplizieren, bis sich die Zahlen wiederholen:
    0,2 * 2 = 0,4 -> 0
    0,4 * 2 = 0,8 -> 0
    0,8 * 2 = 1,6 -> 1 => 0,6
    0,6 * 2 = 1,2 -> 1 => 0,2

    -> 0,2 = 0,(0011)2 (der Teil in Klammern ist die Periode)



  • Also ist das Ergebnis von
    132,210 = 10000100,00112?
    Okay gut, dann habe ich es jetzt verstanden.
    Danke für eure Hilfe. 👍



  • FreakY<3Cpp schrieb:

    Also ist das Ergebnis von
    132,210 = 10000100,00112?

    Wenn du jetzt noch unendlich oft die Folge 0011 ans Ende hängst, stimmt es 😉



  • Gut, oder ich schreib es in Klammern wie du meintest, wenn ich das richtig verstanden habe. 🙂



  • 0,2 = 0,p00112 (ab p die Periode)

    0,2
    = 1/5
    = 0012/1012
    = 00102/10102
    = 00112/11112
    //geschafft, irgendwann kommt als Nenner eine um 1 verminderte Zweierpotenz
    //Und dann ist der Zähler die Periode.
    = 0,p00112

    Test:
    0,p00112 * 1012
    = 0,p00112 * 1002 + 0,p00112 * 12
    = 0,p11002 + 0,p00112
    = 0,p11112 = 0,p12 = 12


Anmelden zum Antworten