본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다.
------
정수 2개를 입력받아
두 정수를 비트단위로 and 연산한 후, 그 값을 정수로 출력해보자.
비트단위(bitwise) and 연산자 & 를 사용하면 된다. (& : and, ampersand, 앰퍼샌드라고 읽는다.)
예시
print(a&b)
참고
** 저장되어있는 비트단위로 계산하거나 처리하는 비트단위(bitwise) 연산자는
~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), <<(bitwise left shift), >>(bitwise right shift) 가 있다.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 & 5 : 00000000 00000000 00000000 00000001
이 된다.
비트단위 and 연산은 두 비트열이 주어졌을 때, 둘 다 1 인 부분의 자리만 1 로 계산해 만들어 주는 것이다.
이 비트단위 and 연산을 이용하면 어떤 비트열의 특정 부분만 골라내거나, 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 을 얻어낼 수 있다.
실제로 이러한 계산은 네트워크에 연결되어 있는 두 컴퓨터가 데이터를 주고받기 위해
서로 같은 네트워크에 있는지, 다른 네트워크에 있는지를 판단하는데 사용된다.
이러한 비트단위 연산은
빠른 그래픽처리를 위해 이전 화면과 다른 부분만 찾아내거나 처리하는
마스크(특정 부분을 가리는)연산을 수행하는데에도 효과적으로 사용된다.