OR
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/30 05:01 UTC 版)
ビット単位ORは、ふたつの同じ長さのビットパターンを入力とし、同じ位置のビット毎に論理的ORを行って同じ長さのビットパターンを出力する操作である。各ビット位置で、入力のふたつのビットのどちらかでも 1 であれば、出力ビットは 1 となる。 0101OR 0011 = 0111 C/C++では、ビット単位OR演算子は "|" (縦棒)で表される。 x = y | z; この例では、"y OR z" の結果を x に格納する。これは、C/C++の論理「和」演算子 "||" (ふたつの縦棒)とは異なる。こちらは、オペランドを論理値として取り扱い、結果を "true" か "false" とする。 ビット単位ORは、ビット列がフラグ列として扱われるときによく使われる。つまり、各ビットが個別にブーリアン値を表している場合である。ある二進数値とひとつ以上の1を含むビット列とをビット単位ORを行うと、後者のビット列で 1 となっている位置が結果として出てくるビット列でも1となる。 0010 このビット列は4つのフラグを表しているものとみなす。1番目、2番目、4番目は (0) にセットされていて、3番目が (1) にセットされている。1番目のフラグをセットするには、このビット列にビット単位ORを行えばよい。そのときのもう一方のビット列は1番目のビットだけを1にセットしておく。 0010OR 1000 = 1010 このテクニックはメモリが少ない環境向けのプログラムでよく使われる。ひとつのビットパターンで各種ステータスを一度に表現するのである。 また、MIPSアーキテクチャでは、命令セットを縮小するためにこれを使っている。MIPSではレジスタ間ロード(レジスタからレジスタへの値のコピー)命令がない。その代わりにゼロレジスタという常に内容がゼロで、何かを書き込んでも値が変わらないレジスタがある。そこで、レジスタ間ロードはビット単位OR命令を使って、ゼロレジスタとあるレジスタの ビット単位OR の結果を別のレジスタに格納することで実現される。
※この「OR」の解説は、「ビット演算」の解説の一部です。
「OR」を含む「ビット演算」の記事については、「ビット演算」の概要を参照ください。
ORと同じ種類の言葉
Weblioに収録されているすべての辞書からORを検索する場合は、下記のリンクをクリックしてください。

- >> 「OR」を含む用語の索引
- ORのページへのリンク