1 の補数演算子: ~
~ cast-expression
解説
1 の補数演算子 (~) は、"ビット補数" 演算子とも呼ばれ、オペランドのビットごとの 1 の補数を生成します。 つまり、オペランドの各ビットが 1 である場合の結果は、0 になります。 逆に、オペランドの各ビットが 0 である場合の結果は、1 になります。 1 の補数演算子のオペランドは、整数型である必要があります。
~ の演算子キーワード
compl 演算子は ~ の代替表現です。 プログラムで compl 演算子にアクセスするには、2 つの方法があります。1 つはヘッダー ファイル iso646.h を含める方法で、もう 1 つは /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 です。
整数の上位変換は、整数オペランドに対して実行され、結果の型は、そのオペランドが昇格される型になります。 上位変換のしくみの詳細については、「整数の上位変換」を参照してください。