문제 번호 1083 --[기초-비트단위논리연산] 비트단위로 and 하여 출력하기

1083: [기초-비트단위논리연산] 비트단위로 and 하여 출력하기

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 491  해결 문제 수: 377
[제출][채점상황][게시판][:]

문제 설명

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

입력

두 개의 정수가 공백을 두고 입력된다.
(-2147483648 ~ 2147483647)

출력

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

입력예시

3 5

출력예시

1

도움말

비트단위(bitwise) 연산자 &(and, ampersand, 앰퍼센드라고 읽는다.)를 붙이면 된다.



** 비트단위(bitwise) 연산자는, 

~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), <<(bitwise left shift), >>(bitwise right shift) 가 있다.



예를 들어 3과 5가 입력되었을 때를 살펴보면

3   : 00000000 00000000 00000000 0000011

5   : 00000000 00000000 00000000 0000101

3&5 : 00000000 00000000 00000000 0000001

이 된다.




한편,

이러한 비트단위 and 연산은 두 비트열이 주어졌을 때,

같은 부분만 1로 체크해 출력해주는 것과 같다.



거꾸로, 어떤 비트열의 특정 부분만 모두 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

을 계산할 수 있다.



실제로 이 계산은 네트워크에 연결되어있는 두 개의 컴퓨터가 데이터를 주고받기 위해

같은 네트워크에 있는지? 아닌지? 판단하는데 사용된다.



한편, 이러한 비트단위 연산은 빠른 계산이 필요한



그래픽처리에서 마스크연산(특정 부분을 가리고 출력하는)에도 효과적으로 사용된다.

출처

[제출][채점상황]