본문 바로가기
C 언어

c 언어[018] 비트연산자(1) <<,>>쉬프트연산자, &(and), |(or)

by Smart Factory in 2020 2021. 2. 24.
728x90
반응형

안녕하세요. 스마트팩토리입니다.

c 언어의 연산자 중에서 비트 연산자의 계산법을 알아보겠습니다. 비트 연산자는 c언어 연산자 중에서 가장 헷갈리면서 어려운 연산자 중에 하나 입니다. 수학적으로 연산을 하면 바로 이해되는데 막상해 보면 2진수로 변환해서 해야 하는 어려움이 있습니다. 처음에 이진법에 익숙하지 않으면 당황스러울 수 있기 때문입니다. 그래서 2진법의 값에대해 친숙해 지는 것이 좋습니다. 

2의 거듭제곱을 최소한 2의 10제곱인 1024까지 바로 암기하고 시작하면 연산하는데 이해가 빠르고, 비트나 바이트의 크기에 대해 이해하는데 부담이 덜하게 됩니다. 

 

 

1. 비트 연산자(Bitwise Operation)

(1) shift 연산자: 비트를 이동시키는 연산자

예를 들어 5>>2를 구해 보면 먼저 

5 를 이진법으로 표현하면  101(2) 입니다. 이를 2칸 오른쪽으로 옮기는 것입니다. 

그럼 위 처럼 5>>2 가 2진법의 비트가 오른쪽으로 옮겨가는데 유효값은 1뿐입니다. 그래서 

5>>2 는 1 가 됩니다. 

이를 비쥬얼 스튜디오 2019로 확인해 보겠습니다. 

 

 

같은 방법으로 

5<<2 를  알아보면

5= 101(2) 이므로 

5<<2 10100(2) 입니다. 

즉 20이 나옵니다. 

 

단순한 계산 문제로 나오면위처럼 10진수의 값을 놓고 하나씩 확인하면 바로 이해할 수 있습니다. 생각보다 쉽다는 것도 알수 있습니다. 

(2) AND (&)  연산자

AND는 해당 비트에둘다 1이 있어야 1이 되는 연산입니다.  연산자에서 1은 참이고 0은 거짓으로 표현합니다. 즉  정수값이 나오는 경우는 참이 됩니다. 이를 표로 보면 다음 같습니다. 

예를 들어 5&3을 알아보면

이진법으로 표현하면 위와 같습니다. 그럼 동시에 1 즉 참이 되는 경우가 마지막 1 뿐입니다. 그래서 답 또한 1이 됩니다.

 

직접 코딩을 하고 나온 값을 보면 이해가 안되는 것이 비트 연산자입니다. 그래서 필히 왜그런지 파악하는게 중요합니다. 

(3) or(|) 연산자

다음은 수학적으로 또는 연산자입니다. 

 

5|3 참고로 | 표시는 shift 키의 원화 표시\ 와 함께 있습니다. 

5와 3의 비트에 하나라도 1. 참이 있으면 1 참이 되는 연산자입니다. 

그래서 답은 7 입니다. 

 

직접해 보면 왜그런지 파악하기 전에 이해가 요구되는 연산자입니다. 

 

 

 

 

728x90
반응형

댓글