Re: 75.10 심사문제 질문입니다.
, 도장_ 관리자님이 작성저 해설을 코드로 표현해야 합니다.
Unit 24.4에 비트 연산자로 플래그 처리하기가 있습니다.
bitwise_flag_on.c에서 세 가지 플래그를 처리하는데,
RGB 심사문제에서는 r, g, b가 각각 8비트짜리 플래그라고 생각하면 됩니다.
Unit 24.6, 24.7 연습문제와 심사문제에서 플래그를 확인할 수 있습니다.
큰 숫자를 작은 숫자로 바꾸는 경우에는 나머지 비트는 정리할 필요가 있습니다. 간단히 말해 32비트 숫자에서 8비트만 잘라서 쓴다면 나머지 비트는 정리할 필요가 있습니다. 비트를 자르는 방법은 mask를 쓰는 방법도 있고, 형변환을 이용하는 방법도 있습니다.
입력받은 숫자가 300이면 2진수로는 1 0010 1100이 됩니다. 중간 8~16비트 위치에 이 숫자를 넣는다면 왼쪽 끝에 1이 17번째 비트 값으로 들어가서 간섭을 일으키게 됩니다. 따라서 8개 값을 제외한 나머지 비트는 제거해야 합니다.
비트 이동, 형변환 또는 mask를 이용한 비트 정리, 비트 OR 연산으로 합치기를 할 수 있어야 합니다. 심사문제의 해설은 이 과정을 설명한 것으로 해설을 토대로 코드를 작성할 수 있어야 합니다.