사칙연산으 전위, 중위, 후위 표현
전위, 중위, 후위 표현의 정의
구분 | 영문 | 설명 |
---|---|---|
사칙연산의 전위 표현 | prefix notation | 연산자를 피연산자의 앞에 표기하는 방법 |
사칙연산의 중위 표현 | infix notation | 연산자를 피연산자의 사이에 표기하는 방법 일반적으로 가장 많이 사용되는 표기 방법이다. |
사칙연산의 후위 표현 | postfix notation | 연산자를 피연산자의 뒤에 표기하는 방법 |
전위, 중위, 휘위 표현의 예시
예시 식 : (A + B)
(1) 전위 표현
+AB
(2) 중위 표현
A + B
(3) 후위 표현
AB+
중위 표현식의 후위 표현
기본적으로 사칙연산은 2개의 피연산자와 1개의 연산자를 하나의 계산 세트로 여긴다. 이 점을 전제로 하여 중위 표현식을 후위 표현할 때의 순서를 그리면 아래와 같다.
(1) 가장 계산 우선순위가 되는 계산 세트를 지정한다.
(2) 계산 우선순위가 같은 계산 세트가 두 개 이상 존재하는 경우, 중위표현식에서 앞에 등장하는 계산 세트를 우선한다.
(3) 계산 세트의 피연산자를 앞으로 몰고, 연산자를 가장 뒤에 배치한다.
(4) 3번의 결과물 (피연산자1 피연산자2 연산자) 을 하나의 피연산자로 여긴다.
후위 표현식으로 변환 완료된 것을 구분하기 위해 결과물을 괄호()로 묶기도 한다.
(5) 모든 중위 표현식 요소가 후위 표현으로 바뀔 때까지 1~5번을 반복한다.
더이상 남은 중위 표현식 요소가 없는 경우에 만약 4번 과정에서 괄호를 썼다면, 모든 괄호를 제거한다.
이것이 컴퓨터에서 왜 중요한가?
사칙연산에는 우선순위가 있다. 예를 들어 산술연산자에서는 더하기(+), 빼기(-) 보다는 곱하기(*), 나누기(/) 가 우선되며, 나아가서 이들의 우선순위를 명시함에 있어 괄호등을 사용하기도 한다. 같은 모양의 식이라도 연산자의 우선순위를 다르게 하면 그 식의 결과는 달라지게 되기 때문에 연산의 순서는 매우 중요한 문제이다.
사람의 경우엔 식의 전체를 둘러 보면서 먼저 계산해야 할 부분을 인식하고, 연산자 간의 우선순위를 판단하여 식을 계산할 수 있다. 하지만 컴퓨터는 기본적으로 사람처럼 식 전체를 보고 연산의 우선순위를 평가하지 못하거나 혹은, 사람처럼 식 전체를 보고 이해하게끔 로직을 짜려면 굉장히 복잡해지는 문제가 발생한다.
따라서 컴퓨터에서는 연산이 필요한 식을 “후위 표기법”으로 수식이 처리되게끔 변환되며, 이러한 이유는 후위표기법이 수식이 컴퓨터로 처리되기 가장 효율적인 표기법이기 때문이다.
전위, 중위, 후위 표기법 추가 예시
예시 1 ((A + B) * (C - D))
중위 표기식: ((A + B) * (C - D))
전위 표기식: * + A B - C D
후위 표기식: A B + C D - *
예시 2 ((A + B) * (C - D)) + (E / F)
중위 표기식: ((A + B) * (C - D)) + (E / F)
전위 표기식: + * + A B - C D / E F
후위 표기식: A B + C D - * E F / +
예시 3 A + B * C - (D / E + F)
중위 표기식: A + B * C - (D / E + F)
전위 표기식: - + A * B C + / D E F
후위 표기식: A B C * + D E / F + -
예시 4 ((A + B) * (C + D)) / (E - F)
중위 표기식: ((A + B) * (C + D)) / (E - F)
전위 표기식: / * + A B + C D - E F
후위 표기식: A B + C D + * E F - /