인프런 커뮤니티 질문&답변

ll thinking ll님의 프로필 이미지
ll thinking ll

작성한 질문수

문제로 배우는 C언어

비트연산자

30과 10의 xor

작성

·

63

0

교재의 예제 3번에서 a+b는 30이 되고, a-b는 10이 되어서,

30은 2진수로 11110이고, 10은 2진수로 1010이므로 xor연산 결과로 10100이 되어 답은 20이라고 생각했습니다.

하지만 실행결과는 10이라고 출력됩니다.

구글에서 xor 연산 계산기를 검색하여 나온 계산기로 XOR Calculator Online, MiniWebtool에서는 30과 10의 연산결과가 20이라고 나오는데, 어떤게 맞는건지 모르겠습니다.

 

아래는 제 코드입니다.

 

#include <stdio.h>

int main(void)

{

int a = 20, b = 10;

a = a + b;

b = a - b;

printf("%d\n", a ^ b);

return 0;

}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

제출하신 코드를 보면, ab의 초기값은 각각 20과 10입니다. 그리고 이후 연산 과정은 다음과 같습니다:

  1. a = a + b; 이 연산 후 a는 30이 됩니다. (20 + 10 = 30)
  2. b = a - b; 이 연산 후 b는 이제 20이 됩니다. (30 - 10 = 20)

따라서 printf("%d\n", a ^ b);에서 a ^ b를 계산하면, 30과 20의 XOR 연산을 하는 것입니다. 30을 2진수로 표현하면 11110이고, 20을 2진수로 표현하면 10100입니다. 이 둘을 XOR 연산하면 01010이 되며, 이는 십진수로 10입니다.

즉, 코드가 출력하는 결과는 10이 맞습니다. XOR 연산을 진행하실 때는 연산 전의 변수 값들을 정확히 확인하시고 그에 따른 결과를 예측해 보시기 바랍니다.

ll thinking ll님의 프로필 이미지
ll thinking ll

작성한 질문수

질문하기