저는 C#에서 Gomoku 구현을 진행하고 있으며 프로젝트의 첫 번째 과제는 보드 상태를 지능적으로 표현하는 것입니다.C#에서 비트 필드 추가 수행
이 목표를 달성하기 위해, 나는 조합의 값을 나타내는 비트 필드로 전환하기로 결정
[Flags]
public enum CombinationValue : byte
{
OnePawn = 1,
TwoPawns = 2,
ThreePawn = 4,
FourPawn = 8,
FivePawns = 16
}
I가 발견 문제이며, 그 나는 조합을 증가하고자 할 때 , 나는 이전 비트를 설정 해제하고 기본적으로 enum으로 허용되지 않는 왼쪽으로 바이너리 시프트 인 새 값을 설정하려고합니다. 예를 들어 두 폰의 조합이 있고 그 옆에 폰이 놓여져 있으므로 열거 형 값이 "TwoPawns"대신 "ThreePawn"이되어야합니다.
기본적으로 내가하고 싶은 것은 TwoPawns + OnePawn == ThreePawns입니다.
이 동작을 구현하는 가장 효율적인 방법은 무엇입니까?
CombinationValue result = CombinationValue.OnePawn | CombinationValue.TwoPawns;
을하지만 당신은 다음 3으로 ThreePawn가 필요합니다 :
열거 형을 정수로 형변환 한 다음 원하는 수학을 수행 할 수 있습니다. – jdweng
'ThreePawn'이'4'가 아니라'3'이라면, 예상대로 작동하지 않을까요? 또한, 비트 시프트를 원할 경우 기본 유형 (이 경우 '바이트')으로 캐스트하십시오. – CodeCaster
그래서'TwoPawns + ThreePawn = FivePawns'입니까? 나는 2 + 6에서 16 또는 8을 얻을 수있는 방법을 모르겠다. – Slai