Rechnen in verschiedenen Zahlensystemen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von x_gyxq, 3. März 2008 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 3. März 2008
    So, hoffe erst mal das ich im richtigen Forum bin...
    Ich suche eine allgemeine Anleitung zum umrechnen von verschiedenen Zahlensystemen (nicht nur Dezimal und Dual), Quellsystem -> Zielsystem und Zielsystem -> Quellsystem.
    Für Hilfe wär ich sehr dankbar, BW gibts natürlich auch
     

  2. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #2 3. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    mhh... fang am besten mal hier an:
    Dualsystem – Wikipedia

    die methode im abschnitt "vom dezimal- ins dualsystem" kann man für alle zahlensysteme anwenden. einfach die 2 durch die entsprechende zahl austauschen...
    umgekehrt ist es sogar noch einfacher: einfach die ziffern mit ihrem jeweiligen stellenwert multiplizieren und danach addieren...
     
  4. #3 3. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    ich glaube so ein ganz perfektes forum gibt es für die frage nicht ^^
    aber da ich denke, dass das mehr allgemeine programmierlogik braucht, hab ichs verschoben
    zum thema hat Timer eigentlich schon genug gesagt :)
     
  5. #4 3. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    es gibt des hexadezimal system auch
    mfg fireballer
     
  6. #5 3. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    äh... den sinn dieser antwort verstehe ich nicht so ganz...:spam:

    genausogut könnte man noch erwähnen, dass es das oktadezimalsystem gibt... wenn man es auf die spitze treibt gibt es unendlich viele zahlensysteme, nur wenige sind aber sinnvoll.

    jedoch gilt immer: jede umrechnung lässt sich auf das problem dual->dezimal/dezimal->dual zurückführen.
     
  7. #6 8. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Ja, hexadezimal hab ich auch schon mal gehört, mit Buchstaben und so...
    Nein, mein Hauptproblem ist, dass ich zumindest für die nächste Klausur quer durch die Bank im Quell- und Zielsystm beliebig rechnen können muss und wir leider kein allgemeines Vorghen an die hand bekommen haben... Also falls jemand ahnung davon hat oder noch eine andere Seite kennt bitte melden
     
  8. #7 8. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Allgemeines Vorgehen:

    1. Umzurechnende Zahl ins Dezimalsystem bringen.
    2. Durch Basis des Zielsystems teilen, bis 0 rauskommt und die Reste untereinander aufschreiben. Von unten nach oben gelesen ergibt das die Zahl.

    Beispiel:

    23 ins System zur Basis 3

    23:3 = 7 R2
    7:3 = 2 R1
    2:3 = 0 R2

    Zahl zur Basis 3 = 212

    Probe: 2*3^2 + 1*3^1 + 2*3^0 = 23


    Spezielle Vorgehen:

    binär zu oktal und zurück:
    11011101
    wird in Triaden geteilt von rechts nach links:
    011,011,101

    jetzt einfach die Triaden ausrechnen, also für die erste 011 = 0*2^2 + 1*2^1 + 1 = 3
    die neue Zahl ist also 335

    funktioniert auch rückwärts, also die einzelnen Ziffern nehmen in binär umwandeln und in Triaden von links nach rechts aufschreiben.

    binär zu hexadezimal und zurück:
    11011101
    diesmal in Tetraden aufteilen:
    1101,1101

    1101=1*8+1*4+0*2+1=13=D
    Zahlen in hex: 10=A, 11=B, 12=C, 13=D, 14=E, 15=F
    Zahl in hexadezimal ist also DD

    hexadezimal zu oktal und umgekehrt

    hexadezimal: 41
    4 wird in 4bit dual umgerechnet: 0100
    1 wird in 4bit dual umgerechnet: 0001
    dual also 01000001
    umwandeln zu oktal mit aufteilen in Triaden:
    001,000,001
    dann wieder ausrechnen:
    oktal: 101

    von oktal nach hexadezimal gehts genauso nur wird die Oktalzahl in 3bit Dualzahlen zerlegt und die Dualzahl dann in 4bit Teile von denen die Hexzahlen gebildet werden.

    Wenns Fragen gibt, einfach fragen ;)

    Quelle: Mein Brain
     
  9. #8 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Hier habe ich mal verschiedene Links zusammengesucht wo es ein bisschen beschrieben wird wie es funktioniert ;)

    Link1
    Link2
    Link3

    Finde ich am besten Link4

    PDF-Anleitung : Link5
     
  10. #9 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Ich habe mal in Delphi zwei Funktionen geschrieben, um Zahlen des Dezimalsystems in jedes beliebige Zahlensystem/Darstellungssystem umzurechnen und als Zeichenkette auszugeben - und zurück ... ;-)
    Wie gesagt, das ist in Delphi geschrieben und mit Sicherheit auch nicht sehr intelligent und ohne Fehlerabfrage :rolleyes:

    Die Funktion DecToX:
    Beschreibung:
    Die Zeichenkette Chars ist eine Konstante, die die möglichen Zeichen des Darstellungssystemes enthält.
    (Hier wird die Zeichenkette für das Hexadazimalsystem verwendet)
    Die Funktionsweise ist genau die, die async beschrieben hat:
    Den Rest errechnen und teilen. Der Rest wird dann nur noch dargestellt!
    Code:
    function DecToX( DecNum: Word ): String;
    const
     Chars = '0123456789ABCDEF';
    var
     xStr : String;
     Rest : Word;
     M : Word;
    begin
     xStr := '';
     M := Length( Chars );
    
     while ( DecNum > 0 ) do
     begin
     Rest := DecNum mod M;
     DecNum := DecNum div M;
     xStr := Chars[ Rest + 1 ] + xStr;
     end;
    
     Result := xStr;
    end;
    Die Funktion XToDec:
    Beschreibung:
    Die Zeichenkette Chars ist auch hier eine Konstante, die die möglichen Zeichen des Darstellungssystemes enthält.
    (Hier wird die Zeichenkette für das Hexadazimalsystem verwendet)
    Die Funktionsweise ist hier wie folgt:
    Die Decimalzahl wird mit M multipliziet und dann die Position der Ziffer des Darstellungssystems addiert.
    Warum genau, kann man unten bei async sehen in der Probe, wenn man die Potenzen auflöst!
    Code:
    function XToDec( xStr: String ): Word;
    const
     Chars = '0123456789ABCDEF';
    var
     i : Word;
     DecNum : Word;
     M : Word;
    begin
     DecNum := 0;
     M := Length( Chars );
    
     for i := 1 to Length( xStr ) do
     begin
     if ( Pos( xStr[i], Chars ) > 0 ) then
     begin
     DecNum := DecNum * M;
     DecNum := DecNum + ( Pos( xStr[i], Chars ) - 1 );
     end;
     end;
    end;
    Ich habe beide Funktionen die eig. etwas anders aufgebaut waren umgeschrieben, daher hoffe ich dass ich keine Fehler gemacht habe, weil ich die Funktionen umgeschrieben nicht getestet habe.

    Mit diesen beiden Funktionen kann man sich auch eigene Darstellungssysteme erstellen, indem man die Konstante Chars anders setzt:
    z.B. ist auch Chars = 'BG' möglich, was ein Binärsystem mit dem B anstatt der 0 und dem G anstatt der 1 wäre.

    Leider kann man Binär in Octal oder Octal in Hexadezimal nicht direkt umrechnen, sondern muss den Umweg über das Dezimalsystem wählen!


    Ich hoffe das hilft ein wenig ;-)
     
  11. #10 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    mhhh... also möglich ist es schon, jedoch für uns menschen, die das dezimalsystem gewohnt sind nicht gerade "einfach".
     
  12. #11 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Etwas allgemeines gibt es da nicht wirklich, da man z.b. extrem schlecht das 5er-System direkt in das 22er umrechnen kann ;) Das macht man immer mit dem Umweg über das Dezimalsystem...
     
  13. #12 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Richtig.
    Man rechnet es erst vom Quellsystem ins Dezimal und dann vom Dezimal ins gewünsche System.
    Dazu braucht man eigenentlich nur zwei Rechnungen zu wissen:

    Code:
    'Quellsystem Hexadezimal umrechnen in Dezimal (BLEIBT IMMER GLEICH!!!)
    
     For i As Integer = 0 To [B]x[/B] Step 1
     Dez = Dez + CInt(feld(i) * [B]2[/B] ^ i)
     Next
    
    'Dezimal ins gewünschte System umwandeln (in dem Fall Dual) , das er immer mit 2 rechnet
    'Wenn du z.B. ins Hexa rechnen möchtest einfach mit 16 rechnen!
    
     For i = 0 To [B]x[/B] Step 1
     Feld(i) = Dezimalzahl Mod 2 'rechnet den Rest raus
     Dezimalzahl = Dezimalzahl \ 2 'dividiert immer weiter runter
     Next
    
    
    x ist frei wählbar, je nachdem wie lange er durchrechnen soll (je länger, desto größer wird der Zahlenbereich)

    So sieht das ganze in VB aus, kann man aber auch an jede andere Programmiersprache anpassen.


    MfG,
    SaschaB
     
  14. #13 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    Hat da jemand meinen Beitrag nicht gelesen?

    Ist sogar sehr einfach ;)

    einfacher als übers dez-sys
     
  15. #14 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    @async: Klar habe ich das gelesen ;-)
    Deine Methode geht aber leider nur für Zahlensysteme welche Potenzen von 2 sind, nicht jedoch andere mögliche Zahlensysteme/Darstellungssysteme, wie z.B. Base85.
     
  16. #15 9. März 2008
    AW: Rechnen in verschiedenen Zahlensystemen

    mhhh... du "missbrauchst" aber immernoch das dualsystem; dass verstehe ich nicht unter direkt... desweiteren siehe MrTumnus
     

  17. Videos zum Thema
Die Seite wird geladen...