Поделиться через


Оператор дополнения до единицы: ~

~ cast-expression

Заметки

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

Ключевое слово оператора ~

Текстовым эквивалентом оператора ~ является оператор compl. Чтобы получить доступ к оператору compl в программах, следует включить файл заголовка iso646.h или выполнить компиляцию с параметром компилятора /Za.

Пример

// expre_One_Complement_Operator.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

int main () {
   unsigned short y = 0xFFFF;
   cout << hex << y << endl;
   y = ~y;   // Take one's complement
   cout << hex << y << endl;
}

В этом примере новое значение, присвоенное переменной y, является дополнением до единицы значения 0xFFFF без знака, т. е. значением 0x0000.

Над целочисленными операндами выполняется восходящее приведение целого типа, и результирующим типом является тип, до которого повышается уровень операнда. Дополнительные сведения о том, как выполняется такое повышение, см. в разделе Восходящее приведение целочисленных типов.

См. также

Ссылки

Выражения с унарными операторами

Операторы C++

Операторы C++, приоритет и ассоциативность

Основные понятия

Унарные арифметические операторы