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
За повече интересни трикчета с побитови оператори Цък..
Доста изчерпателно, благодаря за предоставените примери
Радвам се, че успях да помогна :)
Верно, не се бях досетил
Здравей,
Можеш да намериш повече информация за побитовите оператори тук.