Supportnet Computer
Planet of Tech

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

Antwort 2 von thomasn1975

Für einen 8bit-Wert würde das so aussehen:


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

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");