このJavaソースコードには、次の行があります。
if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0) ....
チルダとは~
どういう意味ですか?
このJavaソースコードには、次の行があります。
if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0) ....
チルダとは~
どういう意味ですか?
チルダ(~
)は、Javaで数値のビット単位の補数を実行します。
単項〜ビット単位の補数演算子(引用符)です:
ウィキペディアのビット演算子に関するこのページも参照してください。
ビット単位のNOTまたは補数は、各ビットで論理否定を実行する単項演算であり、指定された2進値の1の補数を形成します。0だった数字は1になり、その逆も同様です。
例えば:
NOT 0111 (decimal 7)
= 1000 (decimal 8)
多くのプログラミング言語 (Cファミリの言語を含む)では、ビット単位のNOT演算子は "
~
"(チルダ)です。
前に述べたように~
、単項ビット単位の NOT 演算子です。あなたの例は、で定義されたもの以外のビットが含まれている
かどうかをテストします。modifiers
KeyEvent.SHIFT_MASK
~KeyEvent.SHIFT_MASK
-> KeyEvent.SHIFT_MASK 以外のすべてのビットが 1 に設定されます。 (modifiers & ~KeyEvent.SHIFT_MASK)
modifiers
->その「属さない」のすべての 1 ビットKeyEvent.SHIFT_MASK
if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0)
KeyEvent.SHIFT_MASK
->何かを行う以外に、1に設定された他のビットが少なくとも1つある場合...公式ドキュメントhttp://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.htmlから:
単項ビット補数演算子 "~" は、ビット パターンを反転します。どの整数型にも適用でき、すべての "0" を "1" にし、すべての "1" を "0" にします。たとえば、1 バイトには 8 ビットが含まれます。この演算子をビット パターンが「00000000」である値に適用すると、そのパターンが「11111111」に変更されます。