# 3. APS/CodeUp

CodeUp # Python 기초 100제_6062_비트단위로 XOR 하여 출력하기_(비트단위 논리연산, 서컴플렉스/카릿 circumflex/caret)

둥굴둥굴둥굴레차 2021. 7. 4. 17:39

 

 

[기초-비트단위논리연산] 비트단위로 XOR 하여 출력하기(설명)(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

[문제]

입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.

 

[input 예시]

3 5

 

 

[output 예시]

6

 

 

[나의 풀이]

a, b = map(int,input().split())
print(a^b)

 


 

비트단위(bitwise) 연산자의 종류

  • ~ (bitwise not) '틸드(tilde)'
  • & (bitwise and)  '앰퍼샌드(ampersand)'
  • | (bitwise or) '버티컬바(vertical bar)' 혹은 파이프(pipe)연산자라고도 불린다.
  • ^ (bitwise xor) '서컴플렉스/카릿(circumflex/caret)'
  • << (bitwise left shift)
  • >> (bitwise right shift)

 

 

비트단위 연산자 ^ (서컴플렉스/카릿)란?

 

둘이 서로 다를 때 1

 

 

예를 들어 3과 5가 입력되었을 때를 살펴보면
3       : 00000000 00000000 00000000 00000011
5       : 00000000 00000000 00000000 00000101
3 ^ 5 : 00000000 00000000 00000000 00000110
이 된다.


이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.

구체적으로 설명하자면,
두 장의 이미지가 겹쳐졌을 때 색이 서로 다른 부분만 처리할 수 있다.


배경이 되는 그림과 배경 위에서 움직이는 그림이 있을 때,
두 그림에서 차이만 골라내 배경 위에서 움직이는 그림의 색으로 바꿔주면
전체 그림을 구성하는 모든 점들의 색을 다시 계산해 입히지 않고
보다 효과적으로 그림을 처리할 수 있게 되는 것이다.


비행기 슈팅게임 등을 상상해보면 된다.

 

 

[참고]

^은 수학식에서 거듭제곱(power)을 나타내는 기호와 모양은 같지만,
C언어에서는 전혀 다른 배타적 논리합(xor, 서로 다를 때 1)의 의미를 가진다.