Побитовое НЕ (~)

Описание

В C++ оператор побитового отрицания обозначается тильдой ~. Этот оператор, в отличие от & и |, употребляется применительно к одному операнду, который указывается после ~. Побитовое НЕ меняет каждый бит операнда на противоположный: 0 становится 1, а 1 становится 0.

Например:

0 1 operand1
----------
1 0 ~ operand1

int a = 103; // в двоичной системе: 0000000001100111 
int b = ~a; // в двоичной системе: 1111111110011000 = -104

Вас может удивить, что результатом данной операции является отрицательное число -104. Это объясняется тем, что старший бит в переменной типа int является так называемым знаковым битом. Если старший бит 1, то число считается отрицательным. Такое представление положительных и отрицательных чисел принято называть дополнительным кодом. Более подробную информацию см. в статье Википедии "Дополнительный код".

Примечательно, что для любого целочисленного x, результатом операции ~x будет являться число (-x-1).

Таким образом, в выражениях со знаковыми целыми числами знаковый бит иногда может приводить к неожиданным, на первый взгляд, результатам.













Расскажи о нас

Сообщение

Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.