Целые числа могут быть представлены в двоичном виде, так что каждая цифра (бит, переключатель) равна 1 (включено) или 0 (выключено):
00000000 == 0
00000001 == 1
00000010 == 2
00000011 == 3
00000100 == 4
00001000 == 8
00010000 == 16
Побитовое ИЛИ объединяет два числа, "объединяя" два набора битов:
First number: 00110000
Second number: 00000010
Result: 00110010
Если бит равен 1 в ЛИБО входных числах, то в результате он будет равен 1.
Сравните с побитовым И, который находит "перекрытие" двух наборов битов:
First number: 00110100
Second number: 10011110
Result: 00010100
Если бит равен 1 в ОБА входных чисел, то он будет равен 1 в результате.
Если числа находятся в переменных a и b, вы можете поместить результаты побитового ИЛИ / И в новую переменную c:
unsigned int c = a | b; // OR
unsigned int c = a & b; // AND
Часто результат необходимо поместить в одну из двух переменных, т. Е.
unsigned int c = a | b; // OR
c = a; // copy
Итак, для краткости, вы можете сделать это за один шаг:
a |= b; // merge b directly into a