본문 바로가기

CS

비트연산자

 

컴퓨터는 기본적으로 이진수를 통해 연산을 하는데 0,1을 통해 켜다와 끄다, 있다와 없다를 표현할 수 있다.

비트 연산은 말 그대로 비트 단위에서 수행되는 연산을 뜻하는데 기본 자료형들보다 더 작은 비트 단위에서 연산이 수행되기 때문에 속도가 빠르고 메모리 사용 또한 효율적이다. 예를 들어 bool 자료형만 해도 true / false를 표현하기 위해 1byte, 즉 8비트의 공간을 차지하게 되는데 이는 앞서 말한 이진수의 표현법대로 켜다,끄다 즉 1비트만으로 나타낼 수 있는 표현이다.

 

위의 표에서는 비트와 비트를 비교하여 0과 1로 나타내는 연산자들에 대해 나와 있는데

 표에는 없는 지정한 수만큼 비트들을 전부 왼쪽으로 이동시키는 "<<" Left Shift 연산자와 오른쪽으로 이동시키는 ">>" 연산자도 비트 연산자로 사용된다. 이 시프트 연산자를 이용하여 숫자를 이진수로 표현하는 법을 표현해보고자 한다.

 

 

 

십진수 10을 이진수로 표현하면 1010이다.

int i 가 0이 아니라 3부터 시작해서 1씩 감소하는 이유는 오른쪽에서 i + 1번째에 있는 수를 왼쪽부터 작성하고자 하기 때문이다. 1010에서 3칸만큼 비트를 오른쪽으로 이동시키면 0001이 되는데 이렇게 나온 0001을 1, 즉 0001과 AND 연산하여 i + 1번째 수에 1이 있는지 확인하는 과정을 거치게 된다.

 

이렇게 자리에 1이 존재하면 1을, 그렇지 않다면 0을 적게 되어 i가 0이 될 때까지 반복하는데 이 과정을 통해 10의 값을 가진 num은 1010 이라는 이진수의 값으로 표현될 수 있다.