C

[C] C언어 코딩 도장 23.8 심사문제: 비트 논리 연산자 사용하기

Lee Jaeyoon2 2022. 4. 26. 09:44

표준 입력으로 두 정수(unsigned int)가 입력됩니다. 입력된 두 정수의 비트 연산 결과를 각 줄에 출력하는 프로그램을 만드세요(scanf

함수 호출 전에 문자열을 출력하면 안 됩니다).

  1. num1과 num2를 비트 XOR 연산
  2. num1과 num2를 비트 OR 연산
  3. num1과 num2를 비트 AND 연산
  4. num1을 비트 NOT 연산

출력 결과는 서식 지정자 %u를 사용하세요.

 

표준 입력

1 2

 

표준 출력

3
3
0
4294967294

 

정답

#include <stdio.h>

int main()
{
    unsigned int num1, num2;

    scanf("%u %u", &num1, &num2);

    printf("%u\n", num1^num2);
    printf("%u\n", num1 | num2);
    printf("%u\n", num1&num2);
    printf("%u\n", ~num1);

    return 0;
}

 

풀이

두 정수(unsigned int)가 입력되어야 하므로, unsigne int형 변수 두 개를 선언하고, scanf 함수로 값을 입력받는다. 그다음, 조건 1번을

보면 num1과 num2가 XOR 연산해야 하므로 XOR 연산기호 ^를 사용해 XOR 연산한 값을 출력한다. 다음, 조건 2번을 보면 num1과 num2가 OR 연산해야 하므로 OR 연산기호 |를 사용해 OR 연산한 값을 출력한다. 다음, 조건 3번을 보면 num1과 num2가 AND 연산해야 하므로 AND 연산기호 &를 사용해 AND 연산한 값을 출력한다. 마지막으로, 조건 4번은 num1을 비트 NOT 연산해야 하므로 num1에 NOT 연산기호 ~를 사용해 NOT 연산한 값을 출력하면 된다.

 

참고

연산자 설명
& 비트 AND
| 비트 OR
^ 비트 XOR
~ 비트 NOT
<< 비트를 왼쪽으로 시프트
>> 비트를 오른쪽으로 시프트
&= 비트 AND 연산 후 할당
|= 비트 OR 연산 후 할당
^= 비트 XOR 연산 후 할당
<<= 비트를 왼쪽으로 시프트한 후 할당
>>= 비트를 오른쪽으로 시프트한 후 할당

C언어 비트 연산자