2 바이트가 있고 다른 조합을 얻기 위해 다른 비트를 설정하고 있습니다. 예 : 바이트 1 비트 7 및 바이트 2 비트 1, 비트 2는 조합 장치를 준비 상태로 만듭니다. 이제, 내가 만든 마스크는 16 진수로 2 비트를 더하는 방법
#define C1_device_ready (0x80 | 0x100 | 0x200)
는 다음 나는 데이터를 읽고 비교하려고합니다. 1 바이트에 대해 을 사용할 수 있습니다 (데이터 [0] & 마스크 == 마스크). 그러나 데이터 [0] 및 데이터 [1]의 두 바이트가있는 C1_device_ready 마스크에 대해 어떻게 계산할 수 있습니까? 쉽게 가능합니까, 아니면 싱글 바이트로만 마스킹을해야합니까? :: 첨가 :: 데이터 부호 문자 데이터 [2]
unsigned char
배열이다
감사합니다. 비트 이동 (<8)을 설명해주십시오. – user1566277
'data [0] | (data [1] << 8)'는 최하위 바이트에'data [0]'을,'second'에'data [1]'을 갖는'data' 배열의 두 바이트를'int' 쉬프트 당 최하위 바이트. 비트 연산'<<'과'|'는 자동으로 정수 승격을 수행하기 때문에 더 큰 유형으로 수동으로 캐스트를 삽입 할 필요가 없습니다. –
잘 설명합니다. 그러한 분명한 답변에 많은 감사드립니다. – user1566277