C 언어 - 비트연산

컴퓨터/C

728x90
반응형

비트를 연산하다.

컴퓨터에서 기본적으로 제공하는 단위는 보통 1바이트입니다. 메모리의 최소 단위가 1바이트로 이루어져 있기 때문입니다. 하지만 컴퓨터 공학을 배우면 정보의 가장 작은 단위는 1비트입니다 0과 1만이 존재합니다. 

본문에서는 비트를 연산하는 방법에 대해 알아보도록 합시다.

 

비트연산의 장점

비트 연산을 할 수 있다면 작은 단위의 데이터를 조금 더 효율적으로 다룰 수 있게 됩니다. 또한 비트단위의 계산은 조금 더 빠른 속도를 제공합니다. 

다만, 우리에게 익숙하지 않은 2진수의 개념을 익혀야만 쉽게 사용할 수 있습니다.

흔하게 사용되지는 않지만 작은 단위의 데이터 안에 효율적인 정보를 담기 위해 사용되고 있습니다.

 

비트 연산기호

비트 연산자 설명
& AND 연산
| OR 연산
^ XOR 연산
<< Left Shift
>> Right Shift

위의 표처럼 비트를 다양한 방법으로 제어할 수 있습니다. 

자 그럼, 하나씩 사용해 보며 비트 연산에 대해 알아보도록 합시다.

 

논리 연산

int main(){

	unsigned char number1 = 1; // 2진수 메모리 : 0000 0001
    unsinged char number2 = 7; // 2진수 메모리 : 0000 0111
    
    // AND 대응되는 비트가 모두 1이면 1 반환
    printf("%d\n", number1 & number2); // 0000 0001 
    
    // OR 대응되는 비트 중 하나라도 1이면 1반환
    printf("%d\n", number1 | number2); // 0000 0111

	// XOR 대응되는 비트가 서로 다르면 1을 반환
	printf("%d\n", number1 ^ number2); // 0000 0110
	return 0;

}

 

시프트 연산

시프트 연산의 경우 비트가 이동을 하게 됩니다.

int main()
{
		// << 시프트 연산
		printf("%d\n", number1 << 1); // 0000 0001 --> 0000 0010 
		// >> 시프트 연산
		printf("%d\n", number1 >> 1); // 0000 0001 --> 0000 0000	
		return 0;
}

예제처럼 비트를 한쪽 이동시키게 되는 겁니다. 다만 크기 이상을 벗어난다면 오버플로우 현상으로 인해 데이터는 사라지게 됩니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :