광산 실험을 시작하는 데 약간의 문제가 있습니다. 이 연구소는 다음과 같은 지침이 있습니다열거 형을 사용한 비트 연산
감안할 값은 개인 좋아하는 스포츠 결정
int input = 0b10010110
. 이 입력에 오류가 없다고 가정합니다. 왼쪽에서부터 오른쪽의 각 위치는 미식 축구, 야구, 배구, 수영, 소프트볼, 축구, 하키, 라크로스를 나타냅니다.그 위치에 1이 있으면 그 사람은 그 스포츠를 좋아합니다. 주어진 "binary"입력을 기반으로 사용자가 즐기는 모든 스포츠를 화면에 출력합니다. 주어진 이진수에 대해 사용자는 축구, 수영, 축구 및 하키를 좋아합니다.
은 문자의 배열을하지 마십시오.
열거 형 데이터 형식을 사용해야합니다.
나는 그것을인지 말해 문자열의 각 위치를 비교하는 방법을 모르겠어요 1 또는 내가 가진 하나의 아이디어가 나는 각 스포츠를 설정 곳 열거 타입을 사용하는 것입니다 0 에만 해당 위치가 1
enum sport{
Football = 0010000000,
Baseball = 0001000000,
Volleyball = 0000100000,
... ,
Lacrosse = 0000000001
};
난 후 원래 값은 지정된 위치를 떠나 오른쪽 주어진 값 "입력"배의 적절한 양/왼쪽 시프트 것 모두 설정하는 십 개 자리 숫자 다른 값은 0입니다. 축구 :
input << 2; input >> 9; input << 7;
그래서 새 설정 값은 0010000000
이됩니다. 그러면 전체 숫자를 비교할 수 있습니다. 나는 각 경우에 대해 그렇게해야 할 것이지만 나는 그것을하는 다른 방법을 생각할 수 없다.
내가 완전히 꺼져 있습니까? 비트 연산을 사용하여 각 위치의 값을 확인하는 더 기능적인 방법이 있습니까? 사전에 도움을 주셔서 감사합니다.
1 비트 검사에 더 적합한 비트 시프트 이외의 연산자가 있습니다. – chris