Поразрядная операция ИЛИ
При выполнении поразрядной операции ИЛИ n-й бит результата равен результату логической операции ИЛИ над n-ыми битами операндов. Таким образом, каждая пара битов операндов выступают как участники отдельной операции " или" . Смысл ее заключается во фразе "хотя бы один". Значение результата равно 1, если хотя бы один из операндов равен 1, а равен 0 только в том случае, если оба они равны 0:
.
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
Поразрядные операции легко анализировать с использованием шестнадцатеричного представления содержимого машинных слов, раскладывая каждую шестнадцатеричную цифру в четыре двоичных бита:
.
0x7506 0111 0101 0000 0110
0xFF28 1111 1111 0010 1000
__________________________________
0xFF2E 1111 1111 0010 1110
Однако разглядеть скрытый смысл в таком манипулировании машинными словами довольно сложно. Более очевиден случай, когда одна переменная является одновременно операндом и результатом, то есть имеет место операция вида
a = a | b; или a |= b;
Тогда при значении бита операнда b, равном 0, значение соответствующего бита операнда a не меняется, а при значении 1 безусловно устанавливается в 1. Такую операцию можно назвать УСТАНОВКА БИТОВ по маске. Фиксированные биты можно установить, если второй операнд является константой. В шестнадцатеричной константе номера этих битов легко определяются из шестнадцатеричных цифр:
a |= 0x0861; // Установить в 1 биты 0,5,6,11
a |= 0x00F0; // Установить в 1 биты с 4 по 7
// (биты второй цифры справа)