Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verstehe Code nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.07.2005, 15:04 Uhr
~Walter32
Gast


hallo,

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




vielen dank im vorraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.07.2005, 15:33 Uhr
(un)wissender
Niveauwart


Der Code gibt die umgekehrte Bitreihenfolge des "least significant byte" von Zahl aus.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.07.2005, 15:53 Uhr
ao

(Operator)


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.)

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.07.2005, 16:02 Uhr
~Walter32
Gast


super vielen dank ao!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.07.2005, 16:12 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


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 { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.07.2005, 20:20 Uhr
(un)wissender
Niveauwart


@ao
Ja, richtig, ist nicht umgekehrt. War da etwas flüchtig.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: