知り合いから論理和を習った

public enum CONDITION_TYPE:short
{ 
  DATE_SCOPE = 1, 
  USER = 2, 
  SORT = 4 
};
引数に論理和を入れて条件を自由に設定できる。
SetHoge(CONDITION_TYPE.USER | CONDITION_TYPE.SORT);
比較には論理積を使う。入っていれば1入っていなければ0が返る。
public SetHoge(short p) {
  if (p & CONDITION_TYPE.DATE_SCOPE) {
    Console.Writeln("DATE_SCOPEが入っているよ");
  }else if (p & CONDITION_TYPE.USER) {
    Console.Writeln("USERが入っているよ");
  }else if (p & CONDITION_TYPE.SORT) {
    Console.Writeln("SORTが入っているよ");
  }
}

参考:機械語の時に、0を代入する時は、論理積を使ったら早いから下のようなことをしてたらしい

  • MOV AH,0
  • XOR AH,AH ←こっちの方が早い