~(ビット単位の補数演算子)

Last revision:2024/05/16

名称

~(ビット単位の補数演算子)

説明

C++言語におけるビット単位の補数演算子は、~であらわされる。&や|とは異なり、~演算子はその右側にある一つのオペランドにだけ適用される。~演算子はそれぞれのビットを反転する。すなわち、0は1になり、1は0になる。以下に例を示す。

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

使用例

1
2
int a = 103;  // binary:  0000000001100111
int b = ~a;   // binary:  1111111110011000 = -104

注意

この演算の結果、-104といった負の値が表れることに驚くかもしれない。int型の変数の最上位ビットがいわゆる符号ビットであることによる。最上位ビットが1のとき、その数字は負の値として解釈される。正の数と負の数をこのように表すことは、2の補数と呼ばれる。

余談ながら、全ての整数xにおいて、~xは、-x-1となることは興味深い。

符号付整数の符号ビットは望ましくない結果をもたらすことがしばしばある。

参照

オリジナルのページ

https://docs.arduino.cc/language-reference/en/structure/bitwise-operators/bitwiseNot/

最終更新日

August 16, 2026

inserted by FC2 system