Arduino:Справочник языка Arduino/Побитовые операторы/Побитовый оператор NOT(~): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
(не показаны 2 промежуточные версии 1 участника)
Строка 7: Строка 7:
Побитовый оператор '''NOT''' в языке '''C++''' обозначается символом тильды, т.е. '''«~»'''. В отличие от «&» и «|», побитовый '''NOT''' применяется только к одному операнду, а его функция заключается в изменении бита на противоположный. То есть '''«0»''' становится '''«1»''', а '''«1»''' становится '''«0»'''. Например:
Побитовый оператор '''NOT''' в языке '''C++''' обозначается символом тильды, т.е. '''«~»'''. В отличие от «&» и «|», побитовый '''NOT''' применяется только к одному операнду, а его функция заключается в изменении бита на противоположный. То есть '''«0»''' становится '''«1»''', а '''«1»''' становится '''«0»'''. Например:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
0  1    operand1
0  1    operand1
----------
----------
Строка 15: Строка 15:
Или более наглядный пример:
Или более наглядный пример:


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" highlight="2" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" highlight="2">
int a = 103;    // в бинарном виде:  0000000001100111
int a = 103;    // в бинарном виде:  0000000001100111
int b = ~a;    // в бинарном виде:  1111111110011000 = -104
int b = ~a;    // в бинарном виде:  1111111110011000 = -104
Строка 27: Строка 27:


=См.также=
=См.также=
{{ads}}


=Внешние ссылки=
=Внешние ссылки=
Строка 33: Строка 32:
<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/Arduino}}
{{Навигационная таблица/Arduino библиотеки}}


[[Категория:Справочник языка Arduino]]
[[Категория:Справочник языка Arduino]]
[[Категория:Побитовые операторы языка Arduino]]
[[Категория:Побитовые операторы языка Arduino]]
[[Категория:Побитовый оператор]]
[[Категория:Побитовый оператор]]

Текущая версия от 12:40, 20 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Побитовый оператор NOT (~)[1]

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

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

Или более наглядный пример:

int a = 103;    // в бинарном виде:  0000000001100111
int b = ~a;     // в бинарном виде:  1111111110011000 = -104

Удивляет, что в результате может получиться отрицательное число (вроде «-104»)? Дело в том, что самый первый бит в этой целочисленной переменной — это так называемый «знаковый бит». Если он равен «1», число интерпретируется как отрицательное. Метод кодирования положительных и отрицательных чисел называют «дополнительным кодом», более подробно о нем можно прочесть, например, числа) в Википедии.

Попутно стоит отметить, что для любого целого «x», «~x» будет то же самое, что и «-x-1».

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

См.также

Внешние ссылки