Supportnet / Forum / Anwendungen(Java,C++...)
C eine Dezimalzahl in Binär umwandeln (int)
Frage
Hallo und schönen Sonntagnachmittag,
ich hab da nen kleines Problem:
Ich möchte in C eine Dezimalzahl (via scanf)
einlesen und möchte diese in das äquivalente
Binärformat umwandeln und ausgeben lassen.
Ich verstehe nur nicht, wie ich das realisiere.
Habe schon über die Modulo-Operation nachgedacht.
Mein eigentliches Problem ist, dass ich nicht weiss
wie ich die einzelnen bits der int-variablen erreiche.
Hat jemand eine Idee?
Vielen Dank,
Gruß Olli
PS: Wertebereich geht von -2 hoch10-1 bis 2 hoch10-1 -1
Antwort 1 von IT-Olli
Guten abend nochmal :-),
bin leider noch nicht viel weiter gekommen,
hat nicht vielleicht doch jemand eine Idee?
Ich habe nur EIN Problem:
Bsp.:
scanf("%d",&x);
Es wird z. B. die Zahl 21 eingegeben.
Jetzt möchte ich, dass bei einem printf
diese Zahl als Binärzahl ausgegeben wird
Also solch etwas wie 01010100.
Weiss jemand wie das geht? Algorithmus?
Funktion, Methode oder ähnliches itoa funzt
bei mir allerdings leider nicht!
Gruß Olli
bin leider noch nicht viel weiter gekommen,
hat nicht vielleicht doch jemand eine Idee?
Ich habe nur EIN Problem:
Bsp.:
scanf("%d",&x);
Es wird z. B. die Zahl 21 eingegeben.
Jetzt möchte ich, dass bei einem printf
diese Zahl als Binärzahl ausgegeben wird
Also solch etwas wie 01010100.
Weiss jemand wie das geht? Algorithmus?
Funktion, Methode oder ähnliches itoa funzt
bei mir allerdings leider nicht!
Gruß Olli
Antwort 2 von thomasn1975
Für einen 8bit-Wert würde das so aussehen:
Das Teil macht folgendes:
In der Schleife wird geprüft, ob Bit 7 gesetzt ist (value & 0x80), trägt an der entsprechenden Stelle 0 oder 1 in den String ein und schiebt danach die Bits in value eine Stelle nach links (value << 1).
char value = 165;
char str[9];
str[8] = 0;
for (int i=0;i<8;++i) {
char = ((int)value & 0x80)?'1':'0';
value << 1;
}
printf("%s\n",str);
Das Teil macht folgendes:
In der Schleife wird geprüft, ob Bit 7 gesetzt ist (value & 0x80), trägt an der entsprechenden Stelle 0 oder 1 in den String ein und schiebt danach die Bits in value eine Stelle nach links (value << 1).
Antwort 3 von IT-Olli
Jaaa, genau das habe ich gebraucht!
Vielen Dank
und nen schönen Abend,
Gruß
Olli
Vielen Dank
und nen schönen Abend,
Gruß
Olli
Antwort 4 von Pumuckel
für 32 bit Integer
int x;
scanf("%d", &x);
for(int i = 0; i < 32; i++)
{
printf("%i", ((x & 0x80000000) != 0 ? 1 : 0));
x = x << 1;
}
printf("\n");

