82

このJavaソースコードには、次の行があります。

if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0) ....

チルダとは~どういう意味ですか?

4

5 に答える 5

75

チルダ(~)は、Javaで数値のビット単位の補数を実行します。

参照:ビット単位の補数(~):数値の1と0を反転します

于 2009-09-27T12:39:29.203 に答える
55

単項〜ビット単位の補数演算子(引用符)です:

  • 整数値でのみ使用されます
  • ビットを反転します。つまり、0ビットは1ビットになり、その逆も同様です。
  • すべての場合で〜xは(-x)-1に等しい

ウィキペディアのビット演算子に関するこのページも参照してください。

ビット単位のNOTまたは補数は、各ビットで論理否定を実行する単項演算であり、指定された2進値の1の補数を形成します。0だった数字は1になり、その逆も同様です。
例えば:

NOT 0111  (decimal 7)
  = 1000  (decimal 8)

多くのプログラミング言語 (Cファミリの言語を含む)では、ビット単位のNOT演算子は " ~"(チルダ)です。

于 2009-09-27T12:38:38.407 に答える
10

前に述べたように~、単項ビット単位の NOT 演算子です。あなたの例は、で定義されたもの以外のビットが含まれている
かどうかをテストします。modifiersKeyEvent.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つある場合...
于 2009-09-27T12:58:56.563 に答える
3

公式ドキュメントhttp://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.htmlから:

単項ビット補数演算子 "~" は、ビット パターンを反転します。どの整数型にも適用でき、すべての "0" を "1" にし、すべての "1" を "0" にします。たとえば、1 バイトには 8 ビットが含まれます。この演算子をビット パターンが「00000000」である値に適用すると、そのパターンが「11111111」に変更されます。

于 2009-09-27T12:42:07.953 に答える