[include(틀:수와 연산)] [목차] == 개요 == [[이항연산]]을 표현하는 방법으로, [[연산자]]와 피연산자의 위치를 어떻게 적는지를 다룬다. == 명칭 == 전위/후위 표기법은, 수식 표기법과 관련된 폴란드의 학자 Jan Łukasiewicz(얀 루카시에비치)의 이름/지역/국가 명을 붙여 부르기도 한다. 그 가운데는 (역) 폴란드 표기법을 가장 많이 쓴다. 전위 표기법: Łukasiewicz / Warsaw / Polish notation 후위 표기법: reverse Łukasiewicz / Warsaw / Polish notation == 종류 == 간단한 예제 || 방법 || 표기 || || 전위 || +12 || || 중위 || 1+2 || || 후위 || 12+ || === 전위 표기법 === prefix notation, Polish notation(PN) 연산자를 피연산자 앞에 배치하는 방법이다. 영어권에서는 후위 표기법보다 사용하기에 편하다. 왜냐하면 영어에서 수식을 읽을 때 전위 표기법의 순서와 같은 순서로 읽기 때문이다.[* VO어순을 갖는 다른 언어에서도 마찬가지다.] 예를 들어 3+4는 'Add 3 and 4'라고 읽으므로 전위 표기법의 순서와 같다.[*A 물론 중위 표기법으로 읽을 수도 있다. 수식을 중위 표기법으로 읽을 수 없는 언어는 존재하지 않는다.] 따라서 후위 표기법보다 읽기 쉽고 중위 표기법보다 프로그램 구현이 간단하므로, [[LISP]], [[Microsoft Excel|엑셀]]등의 일부 [[프로그래밍 언어|언어]]는 전위 방식을 사용한다. === 중위 표기법 === infix notation 연산자를 피연산자 사이에 배치하는 방법이다. 일반인들은 모두 이 방법으로 계산을 배우고 사용한다. 특정 분야의 사람들이 아니라면 중위 표기법만 배운다. 다른 표기법들과 다르게 연산의 우선순위[* [[괄호]] > [[하이퍼 연산]] > [[지수(수학)|거듭제곱]], [[제곱근]], [[로가리듬|로그]], [[삼각함수|삼각식]], [[팩토리얼|계승]] > [[곱셈]], [[나눗셈]] > [[덧셈]], [[뺄셈]] > ([[함수]])]를 정해야 하고, 뺄셈이나 나눗셈 같은 비가환 연산(non-commutative operation)도 신경써야 한다.[[https://black7375.tumblr.com/post/169264990885/%EC%A0%84%EC%9C%84-%EC%A4%91%EC%9C%84-%ED%9B%84%EC%9C%84-%ED%91%9C%EA%B8%B0%EB%B2%95|#]] === 후위 표기법 === postfix notation, reverse Polish notation(RPN) 연산자를 피연산자 뒤에 배치하는 방법이다. 한국어에서 사람이 수식을 읽는 순서와 같은 방식이다. 예를 들어 (3+4)×2는 '3과 4를 더한 것에 2를 곱한다.'로 읽힌다.[*A] [[스택(자료구조)|스택]]을 사용하며 괄호가 필요없기 때문에 수식의 표현이 간단해지는 장점이 있다. 예를 들어 (4 + 5) / (2 - 1)은 역폴란드 표기법으로 4 5 + 2 1 - /로 표기하며 계산 순서는 다음과 같다. 1. 4와 5를 스택에 넣는다. 1. 스텍에서 값 2개를 빼서 덧셈을 계산하고 결과를 스택에 넣는다. 1. 2와 1을 스택에 넣는다. 1. 스텍에서 값 2개를 빼서 뺄셈을 계산하고 결과를 스택에 넣는다. 1. 스텍에서 값 2개를 빼서 나눗셈을 계산하고 결과를 스택에 넣는다. 장점은 프로그램의 구현이 간단해지기 때문에 초기의 프로그래밍 언어[* 유닉스 계열 운영체제에 기본적으로 깔려있는 [[https://en.wikipedia.org/wiki/Dc_(computer_program)|dc]](desk calculator)라는 계산기 프로그램이 이 표기법을 사용하는데, 이는 심지어 [[C(프로그래밍 언어)|C 언어]]보다도 오래된 프로그램이다.]에서 많이 쓰였다. 하지만 복잡한 수식을 표현하는데 어려움이 있으며 계산 순서가 틀릴 경우 어디가 잘못됐는지 알아차리기 힘들다. 수기로 작성하기에 불편하단 단점도 있다. [include(틀:문서 가져옴, this=문단, title=역폴란드 표기법, version=12)] == 표기법 변환 == 원래 표기법에 해당하는 '연산자 1개와 피연산자 2개' 단위로 괄호를 계속 친 다음, 순서대로 바꾸려는 새 표기법으로 변환한다. 괄호가 필요없어지면 지우면 끝이다. 예시 * 중위표기법 1+2×3 을 후위표기법으로 바꿀 때, 1+(2×3) → 1+(23×) → 1(23×)+ → 123×+ * 중위표기법 1+2×3 을 전위표기법으로 바꿀 때, 1+(2×3) → 1+(×23) → +1(×23) → +1×23 == 관련 문서 == * 후위 표기법 * [[휴렛팩커드|HP]]: HP의 공학용 계산기들은 RPN을 사용한다. * [[스택(자료구조)|스택]] * [[Forth|포스]]: [[스택(자료구조)|스택]] 기반의 역폴란드 표기법을 사용하는 [[프로그래밍 언어]] * [[https://en.wikipedia.org/wiki/Reverse_Polish_notation|영문 위키백과 역폴란드표기법]] * [[이항연산]] * [[혼합 계산]] [[분류:컴퓨터]]