반응형

비트연산의 기초 연산자 4개 예제 코드

32비트 PC는 아래와 같이 총 비트 갯수가 32개이다.

비트 연산을 해서 결과값을 int형으로 확인

 

 

 

AND연산 (둘다 1이어야 1을 반환) "&"

0 & 0 0반환
0 & 1 0반환
1 & 0 0반환
1 & 1 1반환

#include <stdio.h>

int main(void)
{
	int num1 = 15;				// 00000000 00000000 00000000 00001111
	int num2 = 20;				// 00000000 00000000 00000000 00010100

	int num3 = num1 & num2;			// 00000000 00000000 00000000 00000100
	
	printf("AND연산 결과 : %d", num3);
}

num2 &= 3 의미 : num2에 0000 0101을 AND연산해라

 

==========================================

 

OR연산 (둘중 하나라도 1이면, 1을 반환) "|"

0 | 0 0반환
0 | 1 1반환
1 | 0 1반환
1 | 1 1반환

#include <stdio.h>

int main(void)
{
	int num1 = 15;				// 00000000 00000000 00000000 00001111
	int num2 = 20;				// 00000000 00000000 00000000 00010100

	int num3 = num1 | num2;		// 00000000 00000000 00000000 00011111
	
	printf("OR연산 결과 : %d", num3);
}

 num2 |= 3 의미 : num2에 0000 0101을 OR연산해라 



==========================================

 

 

XOR연산 (두개가 같으면 0반환, 두개가 다르면 1반환) "^"

0 ^ 0 0반환
0 ^ 1 1반환
1 ^ 0 1반환
1 ^ 1 1반환

#include <stdio.h>

// AND연산자
int main(void)
{
	int num1 = 15;				// 00000000 00000000 00000000 00001111
	int num2 = 20;				// 00000000 00000000 00000000 00010100

	int num3 = num1 ^ num2;	// 00000000 00000000 00000000 00011011
	
	printf("OR연산 결과 : %d", num3);
}

 

 

 

NOT연산 (서로 다른 값을 반환) "~"

~ 0 1반환
~ 1 0반환

#include <stdio.h>

int main(void)
{
	int num1 = 15;				// 00000000 00000000 00000000 00001111
	int num2 = ~num1;			// 11111111 11111111 11111111 11110000

	
	printf("NOT연산 결과 : %d", num2);
}

 

 

비트를 좌우로 한칸씩 이동시키는 Shift 연산자에 대해서는 아래 참고.

https://ansan-survivor.tistory.com/1174

 

[C언어] 비트연산자 Shift 예제 (<<, >> 한 비트씩 움직이기)

비트연산의 Shift는 비트를 우측, 좌측으로 이동시켜주는 연산자이다. 아래 예시를 보면 쉽게 이해할 수 있다. 예를들어 0001 을 << 연산하면 좌측으로 1칸 이동하는 것이고, >> 연산하면 우측으로

ansan-survivor.tistory.com

 

반응형

+ Recent posts