30과 10의 xor
190
1 asked
교재의 예제 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;
}
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
제출하신 코드를 보면, a와 b의 초기값은 각각 20과 10입니다. 그리고 이후 연산 과정은 다음과 같습니다:
a = a + b;이 연산 후a는 30이 됩니다. (20 + 10 = 30)
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 연산을 진행하실 때는 연산 전의 변수 값들을 정확히 확인하시고 그에 따른 결과를 예측해 보시기 바랍니다.
음료수 자판기 출력이 이상하게 나옵니다
0
140
2
i 값 초기화 질문
0
70
2
recipe for targe 'AA.exe' failed
0
62
1
커리큘럼 문의 드립니다
0
232
1
for문에서 sum 관련 질문
0
179
1
이렇게 풀어도 맞는걸까요?
0
253
2
이렇게 풀어도 맞는 풀이일까요?
0
302
1
20페이지 홀,짝,제로 문제에서 이 코드로 짜도 괜찮을까요?
0
257
1
24. 최솟값 구하기
0
332
1
질문 있습니다.
0
324
1
배열을 전역변수로 설정하는 이유
1
665
1
41. A를 #으로에서 질문 있습니다.
0
291
1
20번 소수 판별하기에서 질문 있습니다.
0
422
1
42번 bus error;;;
0
612
1
정수형 배열에서 배열 크기
0
395
1
38. 자리찾기 커지는 방향으로..
0
303
1
37. 배열의 회전에서 ...
0
280
1
1차원 배열에서
0
270
1
지수연산에서
0
300
1
7.연필 개수 문제
0
378
1
a=(int)a 에서 왜 괄호를 붙이나요 a=int a 는 왜안되나요
0
844
1
섹션 6. 소수
0
320
1
왜 2중for문을 두개 쓴건가요?
0
238
1
일곱난쟁이. 1차배열 질문
0
265
1

