작성
·
343
0
2분 40초 쯤 나오는 >>, << 연산자에 대해서
"두 개의 피연산자가 모두 정수이변 결과값은 '몫' 입니다."라고 설명되었는데, 해당 연산이 비트연산 시프트 연산과 같다면 몫이 나올 수 없지 않나요?
예를 들어서
int a = 4; // 100
int b = 1; // 1
int c = a >> b
cout << c << endl;
결과값은 2가 나오게 되니까 몫이라고 설명되는 부분이 이해가 안됩니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
부르신 seonghwaPark님, 답변 드리겠습니다.
비트 연산자 >>
와 <<
는 비트를 우측 혹은 좌측으로 이동시키는 연산자입니다. 따라서 ‘몫’이라는 표현은 정확하지 않을 수 있습니다. 비트 시프트 연산의 경우, a >> b
연산은 실제로 a
의 비트를 오른쪽으로 b
만큼 이동시키므로, a
를 2의 b
제곱으로 나눈 것과 비슷한 결과를 얻게 됩니다. 그러나 이는 차이가 있는 수학적 몫 연산과는 다를 수 있습니다.
여러분의 예에서 int a = 4;
, int b = 1;
일 때, int c = a >> b;
의 결과값은 a
의 비트를 오른쪽으로 1 비트 이동시키므로 2
가 나오게 되며, 이는 4를 2로 나눈 결과와 같지만, 엄밀히 표현할 때 ‘몫’이라고 부르기보다는 ‘오른쪽으로 비트를 한 칸 이동한 결과값’이라고 설명하는 것이 적합합니다.
혹시나 질문이 더 있으시면, 언제든지 추가 질문해주시기 바랍니다. 공부하는데 도움이 되셨길 바랍니다!