Информатика и технология программирования

       

Поразрядная операция ИЛИ


При выполнении поразрядной операции ИЛИ 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


// (биты второй цифры справа)



Содержание раздела