• ベストアンサー

ビット演算子について

JAVAを現在勉強中なのですが。 ビット演算子のところで悩んでいます。 「~」のビットごとの補数とはいったいどういうものでどういった時に使うのか、 「>>」と「>>>」のシフトの違いがなんなのかよくわかりません。 簡単でいいので教えていただければ嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

補数を使う場面は幾つかあるのですが、例えば、あるビットだけを OFF したい (ビットのリセット)ときに使います。 mask = 8; data = data & ~mask; とやると、4ビット目だけ OFF になり、他のビットは元の状態のままです。 >> と >>> の違いは、符号ビットの扱いです。一番左のビットは符号ビット といって、その数値が正か負かを表します。 >>> は、単純にビットをずらすので、一番左のビットは、必ず OFF になります。 >> は、正負の情報を保ちつつビットをずらすので、もし、シフト前に ON で あれば、シフト後にも一番左のビットは ON のままです。

nezunezu
質問者

お礼

a-kuma様ありがとうございました。 ビット演算子について、少し理解できたように思えます。

関連するQ&A