프로그래밍의 기초(의사 코드 트레이스)

⊕는 비트별 배타적 논리합을 나타낸다. 다음 프로그램을 실행한 후의 x와 y의 값의 조합은?

integer: x ← 12, y ← 10
x ← x ⊕ y
y ← x ⊕ y
x ← x ⊕ y
  1. Ax = 10, y = 12
  2. Bx = 6, y = 12
  3. Cx = 12, y = 10
정답과 해설 보기

정답: A. x = 10, y = 12

2진수로 12 = 1100, 10 = 1010입니다. 1행에서 x = 1100 ⊕ 1010 = 0110 = 6, 2행에서 y = 0110 ⊕ 1010 = 1100 = 12, 3행에서 x = 0110 ⊕ 1100 = 1010 = 10이 됩니다. 같은 값과 두 번 배타적 논리합을 취하면 원래대로 돌아오는(a ⊕ b ⊕ b = a) 성질을 이용하여, 작업용 변수 없이 값을 교환하는 방법입니다.

이 분야 연습하기 분야로 돌아가기

프로그래밍의 기초(의사 코드 트레이스)의 다른 문제

  1. x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. 다음 프로그램을 실행한 후의 y의 값은?
  2. ∧는 비트별 논리곱을 나타낸다. 다음 프로그램을 실행한 후의 c의 값은?
  3. x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. x가 75일 때, 다음 대입을 실행한 후의 y의 값은?
  4. 다음 프로시저 bubble은 정수형 배열 data를 오름차순으로 정렬하는 버블 정렬이다. swap(data, j, k)는 data[j]와 data[k]의 값을 교환하는 프로시저이며, 배열의 인덱스는 1부터 시작한다. 프로그램 중의 【a】에 들어갈 것은?
  5. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 프로그램은 오름차순으로 정렬된 정수형 배열 data(인덱스는 1부터 시작)에서 x 이상인 값이 처음 나타나는 인덱스를 lo에 구한다. x는 data의 마지막 요소 이하라고 한다. 프로그램 중의 【a】에 들어갈 것은?