【C言語】論理演算子

このページでは、C言語の論理演算子について解説します。

論理演算子(C言語)

C言語には、論理演算を行うために次のような論理演算子が用意されています。

否定 NOT

記号は「~」で、各ビットが反転されます。
(使用例) ~a

左シフト

記号は「<<」で、ビット列を左にずらします。(余ったところは0で埋められます)
2進数の世界では、2倍することと同等の意味を持ちます。
[使用例] 0011 << 1
[結果] 0110 ( 3<<1 = 6となり、これは2倍するのと同じ)

右シフト

ビット列を右にずらします。(余ったところは0で埋められる)
2進数では2で割るのと同等の意味を持ちます。
[使用例] 0011 >> 1
[結果] 0001
( 3 >> 1 = 1となり、これは2で割るのと同じ)

論理積( X AND Y )

C言語では、 x & y と表記します。
[使用例] 1110 & 1010
[結果] 0010
論理和は、組み込み系では長いビット列の一部分を取り出すのによく使われます。
例えば、「10100011」という測定機器からの出力があり、第3ビット目だけの情報が欲しい時には00100000との論理積を取って、0かそれ以外かを判定するという手法を使います。

論理和(X OR Y)

C言語では x | y と表記します。

[使用例] 1110 | 0010
[結果] 1110

排他的論理和(X XOR Y)

C言語では x ^ yと表記します。

コメント