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
dividierenIch 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 + 5Das 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 = 53Hilft 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.