1 の補数演算子: ~

構文

~ cast-expression

解説

1 の補数演算子 (~) は、"ビット補数" 演算子とも呼ばれ、オペランドのビットごとの 1 の補数を生成します。 つまり、オペランドの各ビットが 1 である場合の結果は、0 になります。 逆に、オペランドの各ビットが 0 である場合の結果は、1 になります。 1 の補数演算子のオペランドは、整数型である必要があります。

~ の演算子キーワード

C++ では、~ の代替スペルとして compl が指定されます。 C では、<iso646.h> ヘッダーにマクロとして代替スペルが指定されています。 C++ では、代替スペルはキーワードであり、<iso646.h> や C++ でそれに相当する <ciso646> の使用は非推奨です。 Microsoft C++ では、/permissive- または /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 の 1 の補数、つまり 0x0000 です。

整数の上位変換が整数オペランドに対して実行されます。 オペランドが上位変換される型は、結果の型です。 整数の上位変換の詳細については、「標準変換」を参照してください。

関連項目

単項演算子を含む式
C++ の組み込み演算子、優先順位、結合規則
単項算術演算子