none
비트연산 로직 RRS feed

  • 질문


  • 비트연산 로직입니다.

    public enum Items { Armor, Weapone, Healmet, Bag, HP };

    조건을 검사하는데 아래와 같이 계속 논리연산을 하려니까 식이 복잡해서 코딩이 지저분해집니다.

    Items item = Items.Armor;
    if (item == Items.Armor || item == Items.Weapone || item == Items.Healmet)
    {    


    }


    위의 식을 아래의 식으로 한번에바꿀수 없을까요?

    if (item == Items.Combat)
    {

    }

    Combat은 Armor, Weapone, Healmet을 모두 포함을 의미합니다.

    2011년 10월 25일 화요일 오후 10:52

답변

  • 안녕하십니까? MicroGameTo

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 비트연산 로직에 대한 답변을 드리겠습니다.

     

    제 생각에는 Enum Flag태그를 선언해서 사용하는 것을 추천해 드립니다.

     

    아래의 로직을 이용하시면 식이 보다 간단하게 됩니다.

     

    [Flags]

    public  enum Items 

    {

        Armor = 1, Weapone = 2, Healmet = 4, Bag = 8, HP = 16, Combat = Armor | Weapone | Healmet, None = 0

    };

     

    public bool Func1(Items item)

    {

        if ((Items.Combat & item) != Items.None)

        {

            return true;

        }

     

        return false;

    }

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

     

    • 답변으로 표시됨 MicroGameTo 2011년 10월 26일 수요일 오후 3:58
    2011년 10월 26일 수요일 오전 9:21
    중재자