Konvertierung zwischen Zahlensystemen

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Zahlensysteme sind Methoden, um Zahlen mit unterschiedlichen Symbolen und mathematischen Operationen darzustellen. Das Konvertieren zwischen verschiedenen Zahlensystemen ist eine häufige Aufgabe in der Programmierung. In diesem Lab werden wir Programme vorstellen, die Zahlen von einem System in ein anderes umwandeln können. Wir werden behandeln:

  • Binär-zu-Dekimal-Konvertierung
  • Oktal-zu-Dekimal-Konvertierung
  • Dekimal-zu-Binär-Konvertierung (ohne Rekursion)
  • Dekimal-zu-Binär-Konvertierung (mit Rekursion)

Hinweis: Sie müssen die Datei ~/project/main.c selbst erstellen, um zu üben, wie man codiert und wie man sie mit gcc kompiliert und ausführt.

cd ~/project
## main.c erstellen
touch main.c
## main.c kompilieren
gcc main.c -o main
## main ausführen
./main

Binär-zu-Dekimal-Konvertierung

Das Binärsystem ist ein Zahlensystem, das nur zwei Ziffern, 0 und 1, verwendet. Das Dezimalsystem ist ein Zahlensystem, das zehn Ziffern, von 0 bis 9, verwendet. Hier ist das C-Programm, das eine binäre Zahl in ihre dekadische Entsprechung umwandelt:

#include<stdio.h>
#include<math.h>

// Funktionsprototypdeklaration
int binary_decimal(int n);

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int n;
    char c;
    printf("Geben Sie die binäre Zahl ein: ");
    scanf("%d", &n);
    printf("\n\n\nDie dekadische Entsprechung von %d ist  %d\n\n", n, binary_decimal(n)); // Funktionsaufruf
    printf("\n\n\t\t\tCoding ist Spaß!\n\n\n");
    return 0;
}

// Definition der Funktion zur Umwandlung von Binär in Dezimal.
int binary_decimal(int n)
{
    int decimal = 0, i = 0, rem;
    while(n!= 0)
    {
        rem = n%10;   // gibt die Ziffer an der Einerstelle
        n = n/10; // gibt die Zahl ohne ihre Einerziffer
        /*
            pow ist eine systemdefinierte Funktion, die
            zwei Integer als Eingabeparameter nimmt
        */
        decimal += rem*pow(2, i++);
    }
    /*
        gibt die dekadische Entsprechung der eingegebenen
        binären Zahl an den Funktionsaufruf zurück
    */
    return decimal;
}

Oktal-zu-Dekimal-Konvertierung

Das Oktalsystem ist ein Zahlensystem, das acht Ziffern, von 0 bis 7, verwendet. Hier ist das C-Programm, das eine oktale Zahl in ihre dekadische Entsprechung umwandelt:

#include<stdio.h>
#include<math.h>

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    long int octal, val, decimal = 0;
    int i = 0;
    printf("Geben Sie eine beliebige oktale Zahl ein: ");
    scanf("%ld", &val);
    octal = val;
    while(octal!= 0)
    {
        /*
            i++ ist Postinkrement, wobei der Wert
            zuerst zugewiesen und dann inkrementiert wird
        */
      decimal += (octal % 10)*pow(8, i++);
      octal/=10;    // gleichbedeutend mit octal=octal/10
    }
    printf("\n\n\nDie äquivalente dekadische Zahl von %ld ist %ld\n\n\n", val, decimal);
    printf("\n\n\t\t\tCoding ist Spaß!\n\n\n");
    return 0;
}

Dekimal-zu-Binär-Konvertierung (ohne Rekursion)

Hier ist das C-Programm, das eine Dezimalzahl in ihre binäre Entsprechung ohne Rekursion umwandelt:

#include<stdio.h>

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int n,c,k;
    printf("Geben Sie eine ganze Zahl im Dezimalsystem ein: ");
    scanf("%d", &n);

    // Im 31-Bit-Format
    printf("\n\n\nDie binäre Entsprechung der Dezimalzahl %d ist:", n);

    for(c = 31; c >= 0; c--)
    {
        k = n>>c;
        /*
            num&1 = gibt true zurück, wenn die letzte Ziffer von num 1 ist
            andernfalls false
        */
        if(k&1)
            printf("1");
        else
            printf("0");
    }
    printf("\n");
    printf("\n\n\t\t\tCoding ist Spaß!\n\n\n");
    return 0;
}

Dekimal-zu-Binär-Konvertierung (mit Rekursion)

Hier ist das C-Programm, das eine Dezimalzahl in ihre binäre Entsprechung mit Rekursion umwandelt:

#include<stdio.h>

//Funktionsprototypdeklarationen
void decimal_binary(int );
void F(int );
void reverse(int );

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int n;
    printf("\n\nGeben Sie eine ganze Zahl im Dezimalsystem ein: ");
    scanf("%d", &n);

    //Im 31-Bit-Format
    printf("\n\nDie binäre Entsprechung der Dezimalzahl %d mit der decimal_binary-Methode ist: ", n);

    decimal_binary(n);  // Funktionsaufruf

    printf("\n\nDie binäre Entsprechung der Dezimalzahl %d mit der F()-Methode ist: ", n);
    F(n);   // Funktionsaufruf
    printf("\n\nDie Umkehrung der binären Darstellung des Werts %d ist: ", n);
    reverse(n); // Funktionsaufruf
    printf("\n\n\t\t\tCoding ist Spaß!\n\n\n");
    return 0;
}

// Funktionsdefinition
void decimal_binary(int i)
{
    if(i <= 1)
    printf("%d", i);   // um in aufwärts-downwärts-Format auszugeben
    else
    {
        decimal_binary(i/2);
        printf("%d", i%2);
    }
}

void F(int j)
{
    if(j/2)
    {
        F(j/2);
    }
    printf("%d", j%2);
}

void reverse(int k)
{
    if(k <= 1)
        printf("%d", k);
    else
    {
        printf("%d", k%2);
        F(k/2);
    }
    printf("\n\n");
}

Zusammenfassung

In diesem Lab haben wir Programme gezeigt, die Zahlen zwischen verschiedenen Zahlensystemen umwandeln können. Wir haben die Binär-zu-Dekimal-Konvertierung, die Oktal-zu-Dekimal-Konvertierung und die Dekimal-zu-Binär-Konvertierung (mit und ohne Rekursion) behandelt. Wir hoffen, dass Ihnen dieses Lab geholfen hat, zu verstehen, wie man Zahlen zwischen verschiedenen Zahlensystemen in der C-Programmierung umwandelt.