Bitwise Operator
Здравейте. Някой ще ми обясни ли защо вместо 6 този код ми връща числото 7
int num = 3;                      // 00000011
 int p = 1; 
 int mask = num << p;       // 00000110
 int result = num | mask;  
 Console.WriteLine(result);
Здравейте. Някой ще ми обясни ли защо вместо 6 този код ми връща числото 7
int num = 3;                      // 00000011
 int p = 1; 
 int mask = num << p;       // 00000110
 int result = num | mask;  
 Console.WriteLine(result);
1 | 0 => 1
1 | 1 => 1
0 | 1 => 1
0 | 0 => 0 и т.н.
0111 е 7
Трябва единствено да запомниш начина, по който работят побитовите оператори.
Когато имаш '&' (побитово ''И''), резултатът от два сравнявани бита е винаги 0(изключен бит), освен когато и двата бита не са единица(включени).
Примери:
0000 0001
&                 => тук операцията дава резултат 0000 0000
0000 0010
0000 0001
&                 => тук операцията дава резултат 0000 0001
0000 0001
Когато имаш '|' (побитово ''ИЛИ''), резултатът от двата сравнявани бита е винаги 1(включен бит), освен когато и двата сравнявани бита са 0(изключени)
Примери:
0000 0001
|                  => тук операцията дава резултат 0000 0001
0000 0000
0000 0001
|                  => тук операцията дава резултат 0000 0001
0000 0001
Третият вид побитов оператор '^' (XOR) е малко по-различен от останалите два. При него, когато имаш два еднакви бита, резултатът е 0(изключен бит), независимо дали битовете са единици или нули. Когато обаче битовете са различни (0 и 1), резултатът е 1.
Примери:
0000 0000
^                 => тук операцията дава резултат 0000 0000
0000 0000
1111 0000
^                 => тук операцията дава резултат 1111 1111
0000 1111
1111 1111
^                => тук операцията дава резултат 0000 0000
1111 1111 
За повече интересни трикчета с побитови оператори Цък..
Доста изчерпателно, благодаря за предоставените примери
Радвам се, че успях да помогна :)
Верно, не се бях досетил
Здравей,
Можеш да намериш повече информация за побитовите оператори тук.