2009-09-27 8 views

答えて

40

それはUnary ~ Bitwise complementオペレータ(引用)ある:

整数
  • は、ビットが0ビットは、すべての場合において1ビットおよびその逆
  • なる、すなわち反転値でのみ使用
    • 〜xが等しい(-x)-1

    も参照してくださいthis page on Bitwise operators on wikipedia、述べている:

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

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

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

  • 3

    単項ビット単位の補数演算子 "〜" のビットパターンを反転させ、すべての "0"を "1"に、すべての "1"を "0"にする積分型のいずれにも適用できます。例えば、1バイトは8ビットを含む。この演算子をビットパターンが "00000000"の値に適用すると、そのパターンは "11111111"に変更されます。

    8

    前述のように、は単項ビットNOT演算子です。
    modifiersKeyEvent.SHIFT_MASKで定義されている以外のビットが含まれているかどうかをテストします。

    • ~KeyEvent.SHIFT_MASK - もしそこ>からKeyEvent.SHIFT_MASK
    • if ((modifiers & ~KeyEvent.SHIFT_MASK) != 0)に "属さない" というmodifiers内のすべての1ビット>から> KeyEvent.SHIFT_MASKのものを除くすべてのビットが1
    • (modifiers & ~KeyEvent.SHIFT_MASK)に設定されていますKeyEvent.SHIFT_MASKの他に少なくとも1つのビットが1に設定されていました...
    5

    Javaのウェブサイトhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

    から単項ビット単位の補数演算子は、 "〜" のビットパターンを反転させ、 は、あらゆる "0"を "1" 、すべての "1"を "0"にする整数型のいずれにも適用できます。例えば、1バイトは8ビットを含む。 この演算子をビットパターンが "00000000"の値に適用すると、 のパターンが "11111111"に変更されます。

    これまでのところ、Pascal MARTINが答えたように、任意の場合、vlaueは - (x)-1に等しくなります。例えば。 〜2 = -3、-6〜= 5、等

    また、Javaで全て正の整数は、それらのバイナリ表現との正の整数の2の補数の値に保存され負の整数として格納されています。

    さて、それはの場合はビットレベルでどのように機能するかを見てみましょう〜2 = -3:

    0000 0000 0000 0010 
    

    今すぐ〜2になります:

    当初、2はそのバイナリ表現に格納されます値(ビットの逆数):

    1111 1111 1111 1101 
    

    どのように私はそれが-3であると知っていますか? まあ、我々は2の(X)を知っているように、それは3

    の2の補数表現に由来しているので、それは-3である= 1の(X)+ 1(https://delightlylinux.wordpress.com/2014/10/13/binary-lesson-12-ones-complement-and-twos-complement/
    私たちの目的は、それを見つけるために、Xです:
    1の(x)の2の(X)= - 私たちの答えはであるため1(前の式に基づいて)

    を2の補数である、
    1の(X)= 1111 1111 1111 1101 - 0000 0000 0000 0001
    1の(X)= 1111 1111 1111 1100 (引く方法 - http://sandbox.mc.edu/~bennet/cs110/pm/sub.html

    したがってx = 1は値の補数です(私たちが得た答えは1のxの補数を表しています)。
    x = 0000 0000 0000 0011
    xが3であることから、私たちの以前の結果〜演算子1111 1111 1111 1101は-3の2の補数として書かれています。

    関連する問題