본문 바로가기
PROGRAMMING/C

비트연산자

by 쪼렙엔지니어 2022. 9. 5.
반응형

자 오늘 배워볼것은 비트연산자 입니다.

간단하게 비트연산자에는 어떤것이 있는지 바로 알아보겠습니다.

 

심볼 연산자 종류
& AND연산자
| OR연산자
^ XOR연산자
~ 반전연산자
<< >> 쉬프트연산자

&(AND연산자)와 |(OR연산자)는 이미 알고 계신분들이 많으실거라 생각합니다. 

간단하게 얘기하자면 아래와 같습니다.

1011 & 1111 = 1011 즉, 둘다 1이어야만 결과값이 1, 그렇지 않으면 결과값이 0이되는 연산자 입니다.

반대로 OR연산자는 둘 중 하나라도 1이면 결과값이 1, 둘다 0이면 결과값이 0이되는 연산자 입니다. 

1011 | 1111 = 1111 이 되겠지요.

 

그럼 ^(XOR연산자)는 무엇일까요? 먼저 OR연산을 한 뒤에 반전값을 출력하는 연산자입니다.

예를 들어 위에서 OR연산을 하였던 1011과 1111의 OR연산결과값은 1111입니다.

그런데 OR연산이 아닌 XOR연산을 한다면 결과값은 0000이 되는 것입니다. 이해되시나요?

1011 ^ 1111 = 0000

 

다음으로 ~(반전연산자)는 말 그대로 해당 변수의 비트값을 반전시킨다는 의미입니다. 

~1011 = 0100 이 되겠지요.

 

마지막으로 <<>>(쉬프트연산자)는 요청된 값만큼 좌우로 쉬프트시키고 빈칸은 0으로 덮어씌운다고 생각하시면 됩니다.

1011 <<2  의 결과값은 좌로 두칸을 밀고 빈자리에 0을 덮어씌워서 101100이 됩니다. 

1011 >>2 의 결과값은 위와는 반대로 우로 두칸을 밀고 빈자리에 0을 덮어씌워서 0010이 됩니다. 이해되시나요?

주의할 점은 왼쪽으로 밀때는 자리수가 증가하지만 오른쪽으로 쉬프트할때는 자리수가 고정된다는 점입니다.

오른쪽으로 쉬프트한다고 해서 소수점자리를 만들수는 없기 때문입니다.

그럼 전체적으로 한번 직접 해볼까요?

결과값은 주석으로 달아두었습니다. 먼저 위에서 변수 a에 대입한 0xAE는 16진수로 표현된 정수이므로 이를 2진법으로 바꾸어 표시하면 10101110이 됩니다. 이건 아제 다들 아시겠지요? 그래서 아까 위에서 배웠던것 처럼 비트연산을 하면 결과값은 주석으로 작성한것 처럼 나옵니다. 아 물론 실제로 결과를 출력해보면 아래와 같이 16진수로 표시됩니다.

오늘은 여기까지 하겠습니다. 다음시간에는 연산의 순위에 대해서 알아보겠습니다. 감사합니다.

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.

반응형

'PROGRAMMING > C' 카테고리의 다른 글

문자 데이터 활용 (문자의 입력과 출력)  (0) 2022.09.13
연산의 우선순위  (0) 2022.09.07
대입연산자, 산술연산자  (0) 2022.02.23
변수의 출력 다음은 데이터 입력!!  (0) 2022.02.14
변수 선언과 출력  (0) 2022.02.11

댓글