if ((aaa[counter++] >> 16 & 0xFF) == 128)
어떤 경우에 if문이 true가 되고 false가 되는 지, 잘 이해가 안가네요.
(aaa[counter++] >> 16 & 0xFF)
16을 오른쪽으로 쉬프트 하는게 어떤 효과를 주는지,
그리고 &은 어떤 역할을 하는 지 알려주세요.
어떤 경우에 if문이 true가 되고 false가 되는 지, 잘 이해가 안가네요.
(aaa[counter++] >> 16 & 0xFF)
16을 오른쪽으로 쉬프트 하는게 어떤 효과를 주는지,
그리고 &은 어떤 역할을 하는 지 알려주세요.
aaa[counter]에 들어있는 숫자를 2진수로 바꾼후,
>>16은 오른쪽으로 그이진수를 16칸 밉니다
&연산자는 and연산자로써 두 비트가 모두 1일때 1, 하나 이상이 0이면 0이됩니다
0xFF는 이진수로 11111111 입니다
이거랑 and를 했더니 128이라는 말은 and한 결과가 10000000 이라는 말입니다
즉 결론은 aaa[counter]를 오른쪽으로 16번 쉬프트했을때 10000000이 나오면 if문이 참
&기 비트 연산자였다는 걸 까먹고 있었네요.
해보니까 aaa[counter]가 FF0000~FFFFFF 가 되야지 true가 되는구요. 저값이 어떤 값인지를 알아봐야겠네요.
늦은 시간 자세히 알려주신 턱지수님 감사합니다~