[C언어 코드업 문제풀이] CodeUp 1060 : [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기(설명)
코드업 1060번 비트단위로 AND 하여 출력하기 문제 풀이 해답입니다.
1. 문제 설명
입력된 정수 두 개를 비트단위로 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로 만들어주는 것과 같다.
이 연산을 이용하면 어떤 비트열의 특정 부분만 모두 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. 입력
2개의 정수가 공백을 두고 입력된다.
-2147483648 ~ +2147483647
3. 출력
두 정수를 비트단위(bitwise)로 and 계산을 수행한 결과를 10진수로 출력한다.
4. 입력 예시
3 5
5. 출력 예시
1
6. 문제 풀이
#include <stdio.h>
int main (void)
{
int num1,num2,result;
scanf("%d %d", &num1 , &num2);
result = num1 & num2;
printf("%d",result);
return 0;
}
|
비트단위 연산 AND(&) 에 관한 문제 풀이입니다. 논리연산에서는 AND를 && 로 계산하였지만
비트단위에서는 &를 사용하여야 합니다.
0011 = 3
0001 = 1
이란 비트를 0011 & 0001 로 AND 연산을 해주게 되면
0001 = 1 이란 값이 나오게 됩니다.
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1062 : [기초-비트단위논리연산] 비트단위로 XOR 하여 출력하기(설명) (0) | 2019.12.25 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1061 : [기초-비트단위논리연산] 비트단위로 OR 하여 출력하기(설명) (0) | 2019.12.25 |
[C언어 코드업 문제풀이] CodeUp 1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명) (0) | 2019.12.25 |
[C언어 코드업 문제풀이] CodeUp 1058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기 (0) | 2019.12.25 |
[C언어 코드업 문제풀이] CodeUp 1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기 (0) | 2019.12.25 |