Code Binär in Dezimal



  • Einen schönen Sontagnachmittag erstmal,

    ich bräuchte bitte Hilfe bei folgendem Code - und zwar verstehe ich den Ausdruck in Zeile 27 nicht. Wie wird denn durch diesen Ausdruck der binäre Wert in Dezimal umgerechnet?

    #include <stdio.h>
    
    int getIntFromChar(char input);
    
    int main()
    {
        /*ein eingegebene char Variable*/
        char input;
    
        int basis =2;
    
        /*Die auszugebende Dezimalzahl wird deklariert und initialisiert*/
        int dezimalZahl = 0;
    
        /*der entsprchende int Wert, der als char eingegeben wurde*/
        int intInput;
    
        printf("Willkommen beim Binarrechner.\n");
        printf("Bitte geben Sie eine Binaerzahl ein.\n");
    
        while ((input=getchar()) != '\n')           //Man kann solange Ziffern eingeben, bis eine newline-zeichen(Enter) eingegeben wird
        {
            /*es wird der numerische Eingabewert berechnet*/
            intInput = getIntFromChar(input);
            dezimalZahl = dezimalZahl * basis + intInput;
        }
        printf("Die Zahl in Dezimalschreibweise ist: %i\n", dezimalZahl);
        printf("Vielen Dank für die Inanspruchnahme des Binaerrechners.\n");
    
        getchar();
    }
    
    /***************************************************************************
    *Die Funktion berechnet den numerischen Wert, wenn er als char eingegeben wurde.
    ****************************************************************************/
    int getIntFromChar(char input)
    {
    
        int result;
        result = input-'0';
        return result;
    }
    

    Danke



  • Binär, dezimal, oktal, hexadezimal ode auch ASCII sind Darstellungen für den Menschen.

    Im Rechner ist es egal, ob die Darstellung jetzt 10000012 oder 1018 oder 6510 oder 4116 oder 'A' ist. Intern ist es immer derselbe Wert.

    Die Zeile 27 funktioniert bei jedem Stellenwertsystem, wenn du mit der höchsten Stelle anfängst.

    Als Beispiel mal etwas im Dezimalsystem (Basis 10)
    du gibst nacheinander 1 2 3 ein. Am Anfang ist dezimalZahl 0

    1. Durchlauf, Eingabe von 1 :  0 * 10 + 1 =   1 // 0+1
    2. Durchlauf, Eingabe von 2 :  1 * 10 + 2 =  12 // 10+2
    3. Durchlauf, Eingabe von 3 : 12 * 10 + 3 = 123 // 120+3
    


  • danke


Log in to reply