ビット演算
このビット列は4つのフラグを表しているものとみなす。1番目、2番目、4番目は (0) にセットされていて、3番目が (1) にセットされている。1番目のフラグをセットするには、このビット列にビット単位ORを行えばよい。そのときのもう一方のビット列は1番目のビットだけを1にセットしておく。
このテクニックはメモリが少ない環境向けのプログラムでよく使われる。ひとつのビットパターンで各種ステータスを一度に表現するのである。
また、MIPSアーキテクチャでは、命令セットを縮小するためにこれを使っている。MIPSではレジスタ間ロード(レジスタからレジスタへの値のコピー)命令がない。その代わりにゼロレジスタという常に内容がゼロで、何かを書き込んでも値が変わらないレジスタがある。そこで、レジスタ間ロードはビット単位OR命令を使って、ゼロレジスタとあるレジスタの ビット単位OR の結果を別のレジスタに格納することで実現される。
ビットシフトも、通常ビット演算の一種として扱われる。
ビットシフトは大きく分けるとシフト演算(一方向に単純に移動させる操作)とローテート演算(ビット列の先頭と末尾を繋いだように循環させる操作(「循環シフト」「環状シフト」「ビット回転」とも)とに分けられる。
全ビットを一律に移動する操作を「論理シフト」(英: logical shift)という。一方、右シフトの際に最上位ビットだけは動かさずに保存するシフト操作を「算術シフト」(英: arithmetic shift)といい、これは最上位ビットを符号ビットとする「符号付き整数」を処理するのに適している。
コンピュータのプロセッサ内のレジスタのビット数(桁数)は有限であるので、これに対するシフト演算(一方向に単純に移動させる操作)はいくつかのビットがレジスタからはみ出す。外から入ってくるビットとはみ出すビットをどう扱うかにより、いくつもの種類がある。
各演算について説明し、その演算の基本を解説。 ビット演算の種類を示す演算子をビット演算子(bitwise operator)という。おまけだが、各プログラミング言語での表記法も紹介する。
なお現状では肝心のアセンブリ言語での表記法(や文法)が説明されていないが、今後説明してゆく。とりあえずx86のアセンブリ言語でのビット演算の表記法については当ウィキペディアと姉妹サイトであるWikibookにまとめた記事があるのでそちらを参照のこと(x86, Logic、 x86, Shift and Rotate)。