Umwandlung von Binärzahlen in Dezimalzahlen



  • Hi,
    ich muß ein Programm schreiben, das binäre Zahlen in dezimale Zahlen umwandelt. Leider bin absoluter Anfänger und damit heillos überfordert.
    Das Programm müßte den User auffordern, eine binäre Zahl einzugeben. Das
    Programm sollte dann die letzte Stelle der eingegebenen Zahl mit 1 multiplizieren, die zweitletzte Stelle mit 2 multiplizieren, die drittletzte mit 4, die viertletzte mit 8, usw. und die Werte dann addieren.
    Ich weiß leider nicht, wie ich an die einzelnen Stellen der eingegebenen
    binären Zahl rankomme. Außerdem muß ich ja von rechts anfangen zu
    multiplizieren und es hängt ja immer von der Länge der eingegebenen Binärzahl ab, wieviele Stellen dann überhaupt mulitpliziert werden müssen. Also kann ich dem Programm ja nicht genau sagen, mit der wievielten Stelle es anfangen muß.
    Würden Arrays mit da weiterhelfen? Ich habe es schon mit Arrays versucht, leider mache ich irgendwas falsch und es funktioniert nicht.

    Kann mir da irgendjemand weiterhelfen oder mir vielleicht Tipps geben, wo ich Beispielprogramme für sowas finden könnte???
    Ich wäre für jede Hilfe unheimlich dankbar!!!
    Sandy



  • Ganz grob hätte ich es jetzt so gemacht:

    Irgendwo am Anfang der .cpp-Datei:

    #include <cmath>
    

    Dann in deiner Funktion:

    int nBinary = UserEingabe(); //<- Pseudocode
    CString strBinary;
    strBinary.Format("%d",nBinary);
    int nDecimal=0;
    int nStringLength = strBinary.GetLength();
    for(int i=nStringLength-1;i>=0;--i)
    {
        nDecimal+=(strBinary[i]-'0')*(int)pow(2,i+1-nStringLength);
    }
    

    Is ungetestet.



  • Probiere ich aus.
    Auf jeden Fall mal vielen Dank!!!



  • Warum nicht mal strtoul verwenden? 😉

    char zahl[] = "001100110011";
    unsigned long n = strtoul(zahl, 0, 2);
    

Anmelden zum Antworten