C -> Dec2Bin

Hawkster

Erfahrenes Mitglied
Liebe Community,

habe ein Prooblem mit einer geschrieben Funktion. Ich soll als Eingabe eine Dezimalzahl vorgeben und danach Binär ausgeben. Das habe ich soweit auch geschafft, nur habe ich nun das Problem, das ich immer 32 Nullen am Ende angezeigt bekomme und noch nicht verstanden habe warum...

Ich weiß das es einfacher wäre mit einer rekursion mit dem Teiler von 2, aber das dürfen wir nicht verwenden. Lediglich Bit-Schiebe-Operationen.

Code:
#include <stdio.h>
#include <stdlib.h>

int main(void){
    unsigned long long eingabe;
    unsigned long long schalter = 0;
    const unsigned long long maxnum = 0x00 - 1;

    printf("Bitte geben Sie eine ganze Dezimalzahl zwischen 0 und %llu ein:\n", maxnum);

    if (!scanf("%llu", &eingabe)) {
            printf("Fehler beim Lesen der Eingabe");
            return EXIT_FAILURE;
    }

    while(eingabe) {
        if ((schalter == 0) && (eingabe & 0x80000000)) {
            schalter = 1;
        }
        if (schalter == 1) {
            if (eingabe & 0x80000000) {
                printf("1");
            }
            else {
                printf("0");
            }
        }
        eingabe = eingabe << 1;
    }

    if (schalter == 0) {
        printf("0");
    }
    printf("\n");

	return EXIT_SUCCESS;
}

Mit freundlichen Grüßen,
Hawkster
 
Hi

Kein Fehler, aber das 0x00 bei maxnum kannst du weglassen. Nur -1.
Bei scanf würde ich auf die 11 bei %11u verzichten.
Statt "eingabe = eingabe << 1;" geht auch "eingabe <<= 1;".

Hauptproblem:
Was ist denn, wenn du vor "while(eingabe)"
ein "printf("%d",sizeof(eingabe));" machst?
Wird 4 oder 8 ausgegeben?
 
Zurück