반응형
1. 비트연산자의 이해
비트 연산자의 대부분이 이항 연산자이며, 피연산자는 반드시 정수이어야 한다.
비트 연산자는 비트단위로 연산을 진행하는 연산자이며, 연산의 결과를 묶어서 하나의 연산결과를 반환한다.
2. 비트연산자들의 종류와 기능
1) & 연산자 : 비트단위 AND 연산자
두개의 비트가 모두 1인 경우에만 1을 반환하여 연산결과를 구성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | int main(void) { int n1=15; /* 00000000 00000000 00000000 00001111 */ int n2=20; /* 00000000 00000000 00000000 00010100 */ int result=n1&n2; /* 00000000 00000000 00000000 00000100 */ printf("n1=%d \n", n1); printf("n2=%d \n", n2); printf("result=%d \n", result); return 0; } |
1 2 3 | n1=15 n2=20 result=4 |
2) | 연산자 : 비트단위 OR 연산자
| 연산자는 두 개의 비트 중에서 어느 하나라도 1이면 1을 반환하여 연산결과를 구성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | int main(void) { int n1=15; /* 00000000 00000000 00000000 00001111 */ int n2=20; /* 00000000 00000000 00000000 00010100 */ int result=n1|n2; /* 00000000 00000000 00000000 00011111 */ printf("n1=%d \n", n1); printf("n2=%d \n", n2); printf("result=%d \n", result); return 0; } | cs |
1 2 3 | n1=15 n2=20 result=31 | cs |
3) ^ 연산자 : 비트단위 XOR 연산자
^연산자는 두 비트의 값이 서로 다를 때 1을 반환하여 연산결과를 구성하는 연산자이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | int main(void) { int n1=15; /* 00000000 00000000 00000000 00001111 */ int n2=20; /* 00000000 00000000 00000000 00010100 */ int result=n1^n2; /* 00000000 00000000 00000000 00011011 */ printf("n1=%d \n", n1); printf("n2=%d \n", n2); printf("result=%d \n", result); return 0; } | cs |
1 2 3 | n1=15 n2=20 result=27 | cs |
4) ~ 연산자 : 비트단위 NOT 연산자
~ 연산자는 1을 0으로, 0은 1로 비트를 반전시켜서 얻은 결과를 반환한다.
~ 연산자는 가장 왼쪽에 있는 부호비트도 반전시킨다.
~ 연산자는 피연산자가 양수일때 음수를 반환한다.
~ 연산자는 피연산자가 음수일때 양수 또는 0을 반환한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | int main(void) { int n1=-1; /* 11111111 11111111 11111111 11111111 */ int n2= 0; /* 00000000 00000000 00000000 00000000 */ int result1=~n1; /* 00000000 00000000 00000000 00000000 */ int result2=~n2; /* 11111111 11111111 11111111 11111111 */ printf("result1=%d \n", result1); printf("result2=%d \n", result2); return 0; } | cs |
1 2 | result1=0 result2=-1 | cs |
반응형
'BackEnd > C' 카테고리의 다른 글
비트 마스크 (0) | 2019.03.09 |
---|---|
비트 쉬프트(Shift) 연산자 (0) | 2019.03.09 |
. (0) | 2019.03.08 |
. (0) | 2019.03.08 |
변수의 종류에 따른 특성과 할당 위치 (0) | 2019.03.05 |