반응형
1. 비트 마스크란?
비트의 열에다가 씌울 수 있는 마스크라는 의미로 볼 수 있는데,
비트 마스크를 활용하여 비트 열의 특정부분을 뽑아 내거나 변경 시킬 수 있다.
2. 비트 열의 일부 추출
3행은 마스크를 씌울 대상이다.
5~8행은 비스마스크이다. 이처럼 마스크라는 것도 비트의 열이다.
10~13행에서 비트의 열들을 4비트씩 뽑아 내었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int main(void) { unsigned short data=0x5678; /* 0101 0110 0111 1000 */ unsigned short msk1=0xf000; /* 1111 0000 0000 0000 */ unsigned short msk2=0x0f00; /* 0000 1111 0000 0000 */ unsigned short msk3=0x00f0; /* 0000 0000 1111 0000 */ unsigned short msk4=0x000f; /* 0000 0000 0000 1111 */ printf("result1= %#.4x \n", data & msk1); printf("result2= %#.4x \n", data & msk2); printf("result3= %#.4x \n", data & msk3); printf("result4= %#.4x \n", data & msk4); return 0; } | cs |
1 2 3 4 | result1= 0x5000 result2= 0x0600 result3= 0x0070 result4= 0x0008 | cs |
3. 비트 열의 변경
전부 0으로 채워져 있던 비트의 열을 앞의 4비트부터 시작해서 순차적으로 채워 나간다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int main(void) { unsigned short data=0x0000; /* 0000 0000 0000 0000 */ unsigned short msk1=0xf000; /* 1111 0000 0000 0000 */ unsigned short msk2=0x0f00; /* 0000 1111 0000 0000 */ unsigned short msk3=0x00f0; /* 0000 0000 1111 0000 */ unsigned short msk4=0x000f; /* 0000 0000 0000 1111 */ data |= msk1; printf("result1= %#.4x \n", data); data |= msk2; printf("result2= %#.4x \n", data); data |= msk3; printf("result3= %#.4x \n", data); data |= msk4; printf("result4= %#.4x \n", data); return 0; } | cs |
1 2 3 4 | result1= 0xf000 result2= 0xff00 result3= 0xfff0 result4= 0xffff | cs |
반응형
'BackEnd > C' 카테고리의 다른 글
배열을 이용한 문자열의 표현 (0) | 2019.03.10 |
---|---|
1차원 배열의 이해와 활용 (0) | 2019.03.09 |
비트 쉬프트(Shift) 연산자 (0) | 2019.03.09 |
비트연산자 (0) | 2019.03.08 |
. (0) | 2019.03.08 |