You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Оператор & определяется так:<br />
l(true) & 1 (true) равно l(true)<br />
1 (true) & 0 (false) равно O(false)<br />
O(false) 5 0 (false) равно O(false)<br />
0 (false) & 1 (true) равно 0(false)<br />
<strong>Для</strong> оператора |:<br />
l(true) I 1 (true) равно l(true)<br />
1 (true) I 0 (false) равно 1(true)<br />
0 (false) I 0 (false) равно О(false)<br />
0 (false) ! 1 (true) равно 1(true)<br />
<strong>Для</strong> последнего логического оператора, называемого "исключающим или" (XOR),<br />
прямой аналог в повседневной жизни найти труднее. Он возвращает значение true,<br />
если истинным является какой-то один (но не оба!) из его аргументов. Таблица истинности<br />
этого оператора представлена ниже (табл. 4.3).<br />
Таблица 4.3. Таблица истинности оператора Л<br />
л 1 О<br />
_ _ .<br />
О 1 О<br />
Теперь, зная, как работают эти операторы с отдельными битами, рассмотрим их<br />
применение к двоичным числам.<br />
Использование битовых операторов<br />
Битовые операторы выполняются подобно любым другим арифметическим операторам.<br />
Самым легким для понимания является оператор ~. Выполнить операцию<br />
~ над числом означает выполнить ее над каждым битом числа.<br />
~0110 2<br />
(0x6)<br />
1002; (Сх9)<br />
0110 2<br />
&<br />
ООНг<br />
0010:<br />
Таким образом получаем, что -Охб равно 0x9.<br />
В следующем примере продемонстрировано выполнение оператора &:<br />
Вычисляем, начиная со старших битов: 0 & 0 равно 0. В следующем бите 1 & 0<br />
равно 0. В третьем бите 1 & 1 дает 1, а в последнем бите 0 & 1 дает 0.<br />
Те же вычисления могут быть выполнены в шестнадцатеричной системе. <strong>Для</strong> этого<br />
нужно преобразовать числа в двоичное представление, выполнить операцию и преобразовать<br />
результат обратно.<br />
0x06 0110 2<br />
& &<br />
0x03<br />
0011г<br />
0x02 0010 2<br />
<strong>Р</strong>асписав числа таким образом, мы получили, что Охб & 0x3 равно 0x2.<br />
(Попробуйте подсчитать значение выражения 0x6 | 0x3. Если вам это удастся, вы<br />
почувствуете себя на седьмом небе. Иначе очутитесь на первой из семи ступенек<br />
в преисподнюю. У меня на это ушло чуть меньше восьми минут.)<br />
50 Часть I. Первое знакомство с C++