05.09.2016 Views

Стефан Р. - С++ Для чайников

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++

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!