Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
~演算子

名称

~演算子

説明

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

0 1 オペランド1
------
1 01 ~オペランド1 - 計算結果
int a = 103; // 2進表記: 0000000001100111 
int b = ~a; // 結果:1111111110011000 = -104(10進表記)

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

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

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

バージョン

Arduino 1.8.2



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system