C · 연산자·연습 문제

비트 시프트

문제 설명PROBLEM

비트 시프트

문제

한 값은 왼쪽 시프트하고 다른 값은 오른쪽 시프트하세요.

구현할 함수

void shift_results(unsigned int left_value, int left_by, unsigned int right_value, int right_by, unsigned int output[2])

입력

left_value, left_by, right_value, right_by가 주어집니다. 시프트 수는 0~30입니다.

입력 파싱과 결과 출력은 숨겨진 I/O 어댑터가 자동으로 처리합니다. 에디터에는 요구된 함수 또는 메서드 구현만 작성하세요.

출력

왼쪽 시프트 결과와 오른쪽 시프트 결과를 출력합니다.

구현 조건

  • 계산 로직은 반드시 shift_results 함수 안에 구현하세요.
  • <<와 >> 연산자를 사용하세요.

공개 테스트

아래 테스트를 각각 독립된 프로세스로 실행합니다. 입력과 기대 출력은 실제 채점 순서와 같습니다.

#이름InputExpected output
1대표1 4 48 216 12
2다른 이동량3 2 32 312 4
30과 홀수0 5 7 10 3
개념 노트와 실수 포인트

연산자

  • 정수 나눗셈 /: 정수끼리면 몫만 남고 소수점은 버림. 7/2 == 3. 실수가 필요하면 한쪽을 실수로 → 7/2.0.
  • 나머지 %: 정수 전용.
  • 증감 a++(후위: 쓰고 증가) / ++a(전위: 증가 후 사용).
  • ⚠️ 한 식에서 같은 변수를 두 번 증감(f(a++, ++a))하면 결과가 정의되지 않음(컴파일러마다 다름). 문장을 나눠 추적하세요.
  • 우선순위: * / %+ - → 비교 → 비트(& ^ |) → && ||. 헷갈리면 괄호!
  • 비트: &AND |OR ^XOR ~NOT, <<n=×2ⁿ, >>n=÷2ⁿ.
  • 형변환 (int)3.9 == 3 (반올림 아님, 버림).