다른 분들이 잘 이해 하셨을지도 모르지만 저는 공부 하면서 설명 -> 코드 직접 짜기 -> 강의 코드 확인 식으로 진행 하는데요
이해가 어려운 분들이 많을 것 같아 확인겸 코드랑 같이 설명 올려보려고 합니다
처음에 if문을 보고 이와 같이 구성하신 분이 많을 것 같습니다.
하지만 이렇게 짤 경우 아래와 같은 구문이 되는데요
이렇게 보면 Read Bit부분은 무시한 채로 Write Bit부분만 동일할 경우 통과가 되기 때문에 정상적으로 동작하지 않습니다.
이렇게 이해가 잘 안가는 구문은 if문으로 변경하여 해보신 뒤에 동일한 함수로 바꾸는 것도 공부할때 도움이 되실듯 합니다.
또한 다른 질문 글에서 int expect = (flag & READ_MASK);이 부분이 이해가 잘 안가시는 분들도 있을 것 같은데 해당 부분이 READ_MASK부분인 뒤의 16비트만 건진다는 의미로 READ_MASK앞의 모든 부분은 0으로 세팅됩니다.
flag 0000 1111 0000 0000 0000 0010 0111 0000 0000
read 0000 0000 0000 0000 0000 1111 1111 1111 1111
expect 0000 0000 0000 0000 0000 0010 0111 0000 0000
으로 나오기 때문에 flag != expect가 됩니다. 켜져있는 WriteBit(5~8비트)가 없을 경우 flag == expect.가 됩니다.
제가 생각하고 구상한 코드는 아래와 같은데 실제로는 강의와 같지만 더 이해하기 편할 사람도 있을 수 있고, 제가 틀린 부분도 있을 수도 있을 것 같아 같이 올립니다.
지적 환영합니다.