# 3. APS/CodeUp

CodeUp # Python 기초 100제_6060_비트단위로 AND 하여 출력하기_(비트단위 논리연산, 앰퍼샌드 Ampersand)

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

 

 

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

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

codeup.kr

 

[문제]

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

 

 

[input 예시]

3 5

 

 

[output 예시]

1

 

 

[나의 풀이]

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

 


 

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

  • ~ (bitwise not) '틸드(tilde)'라고 읽는다.
  • & (bitwise and)  '앰퍼샌드(ampersand)'라고 읽는다.
  • | (bitwise or)
  • ^ (bitwise xor)
  • << (bitwise left shift)
  • >> (bitwise right shift)

 

비트단위 연산자 & (앰퍼샌드)란?

 

두 비트열이 주어졌을 때,
둘 다 1인 부분의 자리만 1로 만들어주는 것.

 


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


이 연산을 이용하면 어떤 비트열의 특정 부분만 모두 0으로도 만들 수 있는데
192.168.0.31   : 11000000.10101000.00000000.00011111
255.255.255.0 : 11111111.11111111.11111111.00000000

두 개의 ip 주소를 & 연산하면
192.168.0.0 :     110000000.10101000.0000000.00000000 을 계산할 수 있다.

 


실제로 이 계산은 네트워크에 연결되어 있는 두 개의 컴퓨터가 데이터를 주고받기 위해
같은 네트워크에 있는지 아닌지를 판단하는데 사용된다.

이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서
마스크연산(특정 부분을 가리고 출력하는)을 수행하는 데에도 효과적으로 사용된다.