Umwandeln b-adischer Zahlen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:26 Di 31.10.2006 | Autor: | hanesy |
Aufgabe | Schreiben Sie ein Programm in MATLAB, das verschiedene B-adische Zahlen
ineinander umrechnet. Implementieren Sie insbesondere die F¨alle B = 2, 8, 10, 16 |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo an alle,
Ich würde für die obige Aufgabe eine gegebene Zahl mit z.B. den Ziffern 12345.67
in eine Matrix
[ 1 2 3 4 5 6 7 ]. dann könnte ich über eine Matrizen multiplikation mit [mm] [b^4 b^3 [/mm] ..... b^-2] zunächst die Dezimalzahl leicht berrechnen.
daran scheitere ich aber bislang, hat jemand einen tipp? oder gehe ich viell ganz falsch an die sache ran ?
vielen dank für jede hilfe
|
|
|
|
Hallo,
dein Ansatz ist leider falsch.
Das Problem ist, dass du eine Zahl von einer beliebigen Basis in eine beliebige andere Basis konvertieren möchtest. Dabei kann es aber passieren, dass in der einen oder anderen Basisdarstellung Buchstaben vorkommen müssen. Also muss deine Eingabe von vornherein ein String oder Char Array sein.
Bei der Konversion ist zu beachten, dass es zwei Ansätze gibt:
1. Wenn man von einer beliebigen Basis A in die Basis B, in der man rechnet, konvertiert, dann geschieht die Konversion synthetisch, d.h. man setzt die Zahl aus den Potenzen der A-Darstellung zusammen und erhält die B_Darstellung. Beispiel:
[mm]A4C_{16} = 10*16^2 + 4*16^1 + 12*16^0 = 2636[/mm] (Wir rechnen in der 10er-Basis, wie man sieht.)
2. Möchte man nun von der gewohnten Basis B in eine andere Basis A konvertieren, so geschieht dies analytisch, d.h. wir stellen fest, welche Potenzen von A in unserer Zahl vorkommen und notieren diese. Beispiel:
[mm]2636/16^2 = A +76/16^2 [/mm]
[mm]76/16^1 = 4 +12/16^1 [/mm]
[mm]12/16^0 = C [/mm]
Also: A4C
Am besten ist es also, du wandelst deine Eingabe zuerst synthetisch in die Zehnerbasis um und erzeugst daraus dann analytisch die Darstellung in deiner Zielbasis.
Für den ersten Schritt kannst du tatsächlich zwei Vektoren miteinander multiplizieren, aber bedenke, dass darin nicht nur die Ziffern '0' bis '9', sondern auch Buchstaben vorkommen können. Das erfordert etwas Vorverarbeitung!
Gruß
Martin
|
|
|
|