ビット演算子(C# WPF)

C#

A & B ビットAND演算子

A&B。読んでそのままAかつB。
ABともにビットが立っている場合、1.
それ以外の場合は0.

00010101
10000111
--------
00000101

A | B ビットOR演算子

AorB。AまたはB。
AまたはBのどちらか1つでもビットが立っている場合、1.
それ以外の場合は0.

00010101
10000111
--------
10010111

A ^ B ビットXOR演算子

AとBのビットで不一致のものが1.
それ以外の場合は0.

00010101
10000111
--------
10010010

Aに対し、Bのビットで1を指定した項目の0と1が反転される、という風に考えることもできる。

~A ビットNOT演算子

00010101 A
11101010 ~A

FileAttributes

C#のファイル属性もビットフィールドになっている。
具体的な使い方は以下のようにTargetのFileAttributesと判定したいAttributesをビットAND演算子でつなぎ、判定したいAttributesと一致するかを判定する。回りくどく感じるが。
具体的には以下のような感じ。

if ((fileAttributes & FileAttributes.Hidden) == FileAttributes.Hidden) return;
if ((fileAttributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) return;
if ((fileAttributes & FileAttributes.System) == FileAttributes.System) return;

Systemファイル以外というような条件の場合、下記のようにも書ける。

if ((fileAttributes & FileAttributes.System) == 0)
{
    処理();
} 
FileAttributes 列挙型 (System.IO)
ファイルとディレクトリの属性を提供します。

コメント