C-Programmierung: Bitmanipulation und Operatoren

Hallo erstmal

Kann mir jemand das mit der AND-Verknüpfung auf dieser Seite http://www.c-howto.de/tutorial-variablen-bitmanipula… bitte genauer erklären? Wie kommen die von a=10 und b=2 auf c=2? Wie rechnet man mit dieser Verknüpfung und warum ist das ausgerechnet mit dem Binärsystem.

Danke schonmal!

UND , beide werte gesetzt
ODER , mindestens einer der beiden werte gesetzt

machen wir eine UND verknüpfung auf die Zahl ,
so werden die Binarewerte die diese Zahl darstellen mit UND verknüpft.

32 16 8 4 2 1

jede stelle stellt den multiplikator mit den werten da

also

 0 0 0 0 0 0
 \* \* \* \* \* \*
 32 16 8 4 2 1 
= 0+ 0+0+0+0+0 = 0

wollen wir jetzt die zahl 32 binare darstellen, muss
die summer 32 ergeben. Jede einzelne 0 ist ein Bit.

setzen wir das BIT bei 32 , so haben wir

 1 0 0 0 0 0
 \* \* \* \* \* \*
 32 16 8 4 2 1 
=32+ 0+0+0+0+0 = 32

wollen wir die 10 , dann nehmen wir erstmal die höhste zahl die da rein geht. Das ist die 8

also

 0 0 1 0 0 0
 \* \* \* \* \* \*
 32 16 8 4 2 1 
= 0+ 0+8+0+0+0 = 8

fehlen also noch 2 , gut machen wir das BIT für den Wert 2 auch noch an.

 0 0 1 0 1 0
 \* \* \* \* \* \*
 32 16 8 4 2 1 
= 0+ 0+8+0+2+0 = 10

somit ist binare 10 = 001010 , da von rechts angefangen wird, können wir die vorderen linken nullen weglassen , fals wir sie brauchen, denken wir die uns.

10 ist also 1010

Nun kommen wir zur 2

 0 0 0 0 1 0
 \* \* \* \* \* \*
 32 16 8 4 2 1 
= 0+ 0+0+0+2+0 = 2

also ist 2 = 10

wenn wir jetzt UND machen wollen , dann schreiben wir die binare werte an gleiche position und vergleichen die postionen (also BITs)

1010
 10

zur besseren ansicht, füllen wir die nullen auf

1010
0010

bei UND werden nur die BITS gesetzt wo beide BIT an der selben position gestzt waren.

also

 1010
UND 0010
= 0010

da wir im normalen leben keine BITS nehmen sondern DEZIMAL also im 10er system denken . Rechnen wir das wieder um

 0 0 0 0 1 0
 \* \* \* \* \* \*
 32 16 8 4 2 1 
= 0+ 0+0+0+2+0 = 2

somit

ist 10 UND 2 gleich 2

das sind also BINAR Operatoren, die sich auf das BIT besziehen und nicht auf ein 10er System , deswegen die Umrechnung :smile: