백엔드

비트 연산 활용 기초

CyberI 2015. 10. 7. 09:04


프로그래밍을 배울 때 비트 연산 이라는 것을 배우게 됩니다. 이때 대부분의 사람들이 비트연산을 어디서 어떻게 사용하지? 라는 의문을 갖게 되는데요. 


이 비트연산을 어떻게 사용될 수 있을지 이번글을 통해서 간단히 알아보려고 합니다.

먼저 비트연산이란 무엇인지 되짚어 보겠습니다.


연산 종류로는 AND, OR , XOR, NOT<<, >> 이렇게 6가지가 존재합니다.

1. AND (&) 연산은 양쪽 비트가 모두 1인경우 1을 반환하고 아닌 경우는 0을 반환합니다.

2. OR (|) 연산은 양쪽 비트중 하나라도 1이 있을경우 1을 반환하고 아닌 경우는 0을 반환합니다.

3. XOR (^) 연산은 양쪽 비트가 다를경우 1을 반환하고 아닌 경우는 0을 반환합니다.

4. NOT (~) 연산은 비트값을 반대로 반환합니다.

5. 왼쪽 쉬프트 (<<) 연산은 비트를 좌측으로 n 만큼 이동합니다. ( a << n == a * 2^n )

6. 오른쪽 쉬프트 (>>) 연산은 비트를 우측으로 n 만큼 이동합니다. ( a >> n == a / 2^n )


6가지 연산중 1,2,4의 연산으로도 다음과 같이 요긴하게 사용할 수 있습니다.


1) 다중 선택값을 저장하고 활용 해야 할 경우

사용자의 타입을 여러개로 지정하고 복수로 선택가능 하다고 예를 들어 보겠습니다.

<유저 타입 설정 기본>


0000 0000 이렇게 8개의 비트를 사용하면 총 8가지의 선택값을 가질 수 있는데요. 위코드 코드를 보자면 첫번째 비트가 1인것은 남자, 두번째 비트가 1인것은 여자, 세번째는 한국인 ...이고 6번째 비트가 1인것은 기혼자 이렇게 6가지를 정의 했습니다. 10진수로 보자면 1,2,4,8,16,32 이렇게 2의 제곱인 숫자들로 구성되어 있습니다.


<유저 타입 설정 활용>

 위의 코드처럼 조금더 다양하게 비트 연산을 활용할 수 있습니다.