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

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

[만든사람 : 전현석, 정종광(채점데이터 및 확인), 배준호(확인), 최웅선(확인), 김지혜(그림) (2013)]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

본 문제는 C 의 빠른 기초 학습을 위해 설계된 문제로서 C 코드 제출을 기준으로 설명되어 있습니다.
------

입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.
비트단위(bitwise) 논리 연산자 & 를 사용하면 된다.(and, ampersand, 앰퍼샌드라고 읽는다.)
참고 
** 저장되어있는 비트단위로 계산하거나 처리하는 비트단위(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 을 얻어낼 수 있다.

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

이러한 비트단위 연산은 
빠른 그래픽처리를 위해 이전 화면과 다른 부분만 찾아내거나 처리하는 
마스크(특정 부분을 가리는)연산을 수행하는데에도 효과적으로 사용된다.

입력 설명

2개의 정수가 스페이스로 분리되어 한 줄로 입력된다.
(-2147483648 ~ 2147483647)

출력 설명

두 정수를 비트단위(bitwise)로 and 계산을 수행한 결과를 10진수로 출력한다.

입력 예시 Copy

3 5

출력 예시 Copy

1

도움

기초100제(c)1 v1.5 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

출처/분류