C언어. 비트 연산자 알아보기
🌟 비트 연산자란?
비트(bit) 단위로 논리 연산이나 이동 연산을 할 때 사용하는 연산자이다. 종류는 다음과 같다.
| 종류 | 설명 | 
|---|---|
| & | 비트 AND 연산. 대응하는 비트가 모두 1이면 1을 반환한다. | 
| | | 비트 OR 연산. 대응하는 비트 중에 하나라도 1이 있으면 1을 반환한다. | 
| ^ | 비트 XOR 연산. 대응하는 비트가 다르면 1을 반환한다. | 
| ~ | 비트 NOT 연산. 1은 0으로, 0은 1로 반환한다. | 
| « | left shift 연산. 비트를 왼쪽으로 이동시킨다. | 
| » | right shift 연산. 비트를 오른쪽으로 이동시킨다. | 
🌟 사용법
AND 연산
int main()
{
    int a = 1; //0000 0001
	int b = 5; //0000 0101
	printf("%d",a & b);
    
    return 0;
}
001 AND 101 = 001이므로 a & b는 1을 반환한다.
OR 연산
int main()
{
    int a = 1; //0000 0001
	int b = 5; //0000 0101
	printf("%d",a | b);
    
    return 0;
}
001 OR 101 = 101이므로 이를 10진수로 바꾸면 5가 되어 a / b는 5를 반환한다.
XOR 연산
int main()
{
    int a = 1; //0000 0001
	int b = 5; //0000 0101
	printf("%d",a ^ b);
    
    return 0;
}
001 XOR 101 = 100이므로 이를 10진수로 바꾸면 4가 되어 a ^ b는 4를 반환한다.
NOT 연산
int main()
{
    int a = 1; //0000 0001
	printf("%d", ~a); 
    
    return 0;
}
~0000 0001 = 1111 1110이므로 15가 출력되야 하나 뭐가 문제인지 -2가 출력됐다. 하지만 15인 건 맞음!
« 연산
int main() {
	int a = 1; //0000 0001
	printf("%d", a<<3);
	return 0;
}
0000 0001 << 3 = 0000 1000이므로 8이 출력된다. 쉬프트 연산자는 뒤에 숫자만큼 비트를 이동시켜줌!
» 연산
int main() {
	int a = 8; //0000 1000
	printf("%d", a>>2);
	return 0;
}
0000 1000 >> 2 = 0000 0010이므로 2가 출력된다. 비트가 이동하는 방향만 바뀌었다고 보면 됨!
 
      
    
댓글남기기