Hilfe bei der Umrechnung von Dual in Dezimal



  • Hallo zusammen,

    ich studiere seit kurzem per Fernlehrgang Wirtschaftsinformatik und habe leider im Moment eine Hausaufgabe im Bereich C++, bei der ich nicht weiterkomme bzw. das Gehirn streikt.Ich soll ein kleines Programm zur Umrechnung von Dualzahlen in Dezimalzahlen schreiben. Leider komme ich zur Zeit auf keinen Ansatz, geschweige denn auf die Lösung.

    Könnt Ihr mir ein paar Tips geben.

    Ich danke euch



  • Wie sieht es aus? Bekommst du die Binärzahlen als Zeichenkette? Und in welchem Format soll die Ausgabe sein? unsigned int ?



  • Im Magazin haben wir einen Artikel über Zahlensysteme (inklusive Umrechnung zwischen verschiedenen Basen).



  • Ich habe keine Vorgabe bekommen, nur den Tip:

    um die letzte Ziffer einer beliebigen Zahl zu bekommen, muss man sie durch 10
    dividieren

    Ich dachte an eine Schleife und einer Feldvariablen aber so richtig hat mich das alles nicht weitergebracht. Vorher sollte ich von dezimal in dual umrechnen. Das hat auch funktioniert. In meinem Studienheft steht auch leider nichts mehr drin oder ich habe einiges übersehen.



  • Kleiner Denkanstoss:

    Nehmen wir mal eine willkürliche Zahl (Dezimalsystem): 8425
    Zerlegen wir das in:

    8*10^3 + 3*10^2 + 2*10^1 + 5*10^0
     8000  +  300   +  20    + 5
    

    Das gleiche Prinzip gilt für Binärzahlen, nur dass hier die Basis natürlich nicht 10 ist sondern 2.

    Wieder willkürlich gewählt: 110101
    Zerlegen das in:

    1*2^5 + 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0
      32  +   16  +   0   +   4   +   0   +   1    = 53
    

    Hilft dir das schonmal weiter? Bisher habe ich noch nicht ganz verstanden was genau dein Problem ist.



  • vielen Dank erst mal für eure Antworten

    mein Problem ist die reine Programmierung, bei der Umrechnung von Dezimal in Dual habe ich ein Feld verwendet, welches die Reste bei der Modulooperation ermitelt

    bei der Umrechung von Dual in Dezimal hatte ich mir vorgestellt, eine Schleife zu nutzen, welche die einzelnen Ziffern mit 2^2, 2^3 usw. multipliziert und dann zusammenrechnet aber ich weiss leider nicht wie es in C++ programmieren kann



  • man könnte das ganze auch als Assemblerfunktion-Aufruf gestalten...
    der asm-code könnte dann in etwa so aussehen:

    Vorgeplänkel:
            xor eax,eax   ;eax = 0
            mov ecx,4
            mov ebx,Zahli ;erster Teil der Binärzahl von hinten
            mov edx,0     ;->summe
            mov esi,1
    
    schleife:
            mov al,bl
            and al,0x0f   ;logische1
            mul esi
            shl esi,1     ;esi * 2
            add edx, eax
            mov al,bl
            and al,0xf0   ;logische2
            shr al,4      ;und aufrücken
            mul esi
            shl esi,1
            add edx,eax
            shr ebx,8     ;ein Byte nach rechts
            loop  schleife
    
    next i
    
    add [Summe],edx
    
    Zahli dd 10110101   ;erste Teil der Zahl 
    Summe dd 00000000   ;Speicherplatz für 32bit Summe
    


  • Assembler verstehe ich leider nicht so

    ich bin ja noch blutiger Anfänger

    im Moment fehlt mir einfach der Ansatz für ein kleines Programm

    bei der umzurechnenden Zahl müsste vielleicht ermittelt werden, welche Länge sie hat aber wie kann dann der Computer feststellen, welche Ziffer welchen Wert hat und dann mit 2 multipliziert werden kann



  • Entweder du fängst von hinten an und erhöht jeweils den Faktor oder du beginnst von vorne und multiplizierst immer die gesamte bisherige Zahl mit 2.

    (wie gesagt: Schau dich bei uns im Archiv um ;))



  • manchmal hilft es, einfach mit den Mitteln zu arbeiten, die einem zur Verfügung stehen. Was weißt du denn schon bzw. was hast du bisher gelernt?
    Kennst du dich schon mit Datentypen und ihrer Ein und Ausgabe aus?



  • Um den von CStoll erwähnten Artikel mal zu verlinken: Zahlensysteme, Teil 1 - Grundlagen

    Hätt ich mir das auch mal angeschaut - hätt ich mir den Denkanstoss auch sparen könnnen 😛

    Es gibt natürlich viele verschiedene Arten das Umwandeln zu bewerkstelligen. Erzähl am besten erstmal was du dir so vorgestellt hast (z.B. Einlesen der Binärdarstellung als string von der Standardeingabe, oder wird gleich eine Zahl eingelesen).
    Je nachdem wie dir die Eingabe vorliegt - Pseudocode des Umwandelns etc.

    Falls schon code vorhanden ist, diesen ruhig posten.


Anmelden zum Antworten