ビット演算
ビットシフトに対して右オペランド(シフト量)の値が負である場合、あるいは左オペランドの型のビット数を超える場合の規定は言語によって異なる(あるいは言語によって規定されておらず、処理系定義や未定義や未規定であったりする)。 Java、.NET言語 (C#、VB.NETなど)、JavaScriptなどでは「左オペランドの型のビット数-1」のビット単位ANDのマスクを右オペランドにかける。これは最低でも1ビットは値を残すための配慮である。以下にC#の例を示す。
C/C++ の ISO の仕様では、このような場合の結果は未定義となっている。GCC や Visual C++ の実装においては、Warning が出るが、上記と同じ結果を返す。
ビットマスク IPアドレスの管理・制御 フラグ管理 画像処理
並列アルゴリズムの実装(Bitapアルゴリズムなど)