C언어. 비트 연산자 알아보기

1 분 소요

🌟 비트 연산자란?

비트(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가 출력된다. 비트가 이동하는 방향만 바뀌었다고 보면 됨!

댓글남기기