könnte mir mal jemand folgenden code erklären? - was er macht weiss ich nämlich anhand einer zahl den binär wert ausgeben aber ich versteh nich wie er anhand einer if das packt, ich kenns von vb und das war bei weitem anders geregelt
hier der code
C++:
void zeig_binaer ( unsigned int Zahl ) { int i;
for ( i = 7 ; i >= 0 ; i--) { if ( Zahl&(1<<i)) printf ("1"); else printf ("0"); } printf ("\n"); }
Beispiel: 75 (dezimal) hat die binäre Darstellung 01001011 (64 + 8 + 2 + 1). Die for-Schleife untersucht jedes Bit dieser Darstellung mit Hilfe einer Maske. 1 << i wird im ersten Durchlauf zu 10000000, danach zu 01000000, 00100000, 00010000 usw. Die &-Verknüpfung der Maske mit der Zahl liefert dann 0, wenn die Zahl an der entsprechenden Stelle ein 0-Bit hat, und etwas von 0 verschiedenes sonst. Das Ergebnis dieses Vergleichs wird ausgegeben und stimmt genau mit der obigen Zahl überein (für (un)wissender: die Schleife zählt von 7 abwärts bis 0.)
obiges beispiel klappt jedoch nur bei ner unsigned-zahl, da sonst nicht unbedingt 0-Bits wieder in die "maske" eingefügt werden sondern dies dann compilerabhängig ist.
(Schau dir mal diesen Links/Rechtsverschiebeoperator << bzw >> in einem Tutorial an, die sind ziemlich hilfreich) -- class God : public ChuckNorris { };