Arduino日本語リファレンス


~ (NOT)

原文

C++言語のNOT演算子「~」は、&や|と違って、右側の1つの値に対して働きます。NOT演算子は各ビットを反対の値にします。0は1に、1は0になります。

0 1 値1
-------
1 0 ~ 値1

int a = 103;    // 二進数で 0000000001100111
int b = ~a;     // 二進数で 1111111110011000 (十進数の -104)

演算の結果、-104という負の数が現れたことに驚くかもしれません。これは整数の最上位ビットが原因です。符号ビットとも言われるこのビットが1のとき、その数は負と解釈されます。
このような正負の値のエンコーディングは「2の補数」と呼ばれます。ちなみに、xが整数のとき、~xは(-x - 1)と同じです。



[目次へ戻る]

Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [ドキュメント一覧]