ビット演算子:
、理解しやすい覚えておくべき最初の事:10に対応する正と負対応する場合。
1. AND(&):11過ぎ0,00 1,10 0を与えることを得ました。
2.または(|):11 1,00 1,10 0あまりにも得られました。
3. XOR(^):11与える1,00 0,10 0を与えるために得た(同じ1は異なって、0です)。
4. ノン(〜):これは、単項演算子、1,1 0(反転)を得得0,2単項上記の3つです。
演算子をシフト:
注意:左シフト演算は、オペレータである整数型(INT)オペランドであり、ビット数が右にシフトします。
1.左変位演算子(<<):左オペランドオペレータにオペレータによって権利指定されたビット数左移動(ローで0は、低いが正しい、左が高いです)
2.右シフト演算子を「符号付き」(>>):「署名された」左オペランド(右に右オペレータ移動右シフト演算子を用いて操作者によって指定されたビット数「符号拡張」 :符号が正である場合、0がハイレベルに挿入され、符号ビットが負の場合、ハイレベルでインサート1)。
3.「符号なし」の右シフト演算子(>>>):これは「ゼロ拡張」を使用:関係なく符号の、高い0に挿入されます。
4.次に、左シフト演算のみ一種はなく、右シフト演算子として。
負のビット・コンピューティング:
注意:int型は、8バイト、32ビットであり、上位0は表示されません。最上位ビットは0または1は、正または負で表されるので、範囲はintとして表される:-1負の第31番目の31(最上位ビットが2の符号2であり、唯一の31ビット数を表し、そして0の正の数があるので、それは2 31 -1)のパワーです。
正の整数演算が高く表示されない、32ビットのソースコードにバイナリビットである0(Integer.toBinaryString(デジタル))
例として-6次のコードは、その後、(-6)出力Integer.toBinaryStringある(1,111,111,111,111,111 1,111,111,111,111,010)
(6)= 110 Integer.toBinaryString。
1.スイッチソース:1つの最上位ビットが負である、他の(1,000,000,000,000,000 0,000,000,000,000,110)の絶対値
2.抗コード:MSBは変更されない、他のビットは(1,111,111,111,111,111 1,111,111,111,111,001)が反転されます。
3.補:逆符号に+1(1,111,111,111,111,111 1,111,111,111,111,010)説明:最後の001 1,1 + 1 = 2を表し、最後の3つは、バイナリ010 2,2に変換されなければなりません
再変換ちょうどライン上での操作の向かい、小数に:
1.抗補コードは-1となります
2.抗コード:MSB変わらず、他のビットは反転ソースなります
3:バイナリコード進で計算
シフト操作が負の数であっても、補体のみ新しい補体に、補体変位カウンタコードとの間のステップを追加することになり、新しいコードが逆相補体-1
負のビットコンピューティングの出所ます。https://blog.csdn.net/weixin_37322501/article/details/85759105