사칙연산
1. 개요
'''사칙연산'''(四則演算)이란, 산수의 기본이 되는 덧셈, 뺄셈, 곱셈, 나눗셈의 4가지 연산을 일컫는다. 뺄셈과 나눗셈을 빼고 그 자리에 지수와 괄호(또는 등호)를 넣기도 한다. 뺄셈은 음수의 덧셈, 나눗셈은 음수지수가 포함된 곱셈이기 때문( $$ a - b = a + (-b) , a \div b = {a \over b} = a {1 \over b} = ab^{-1} $$ ). 벡터나 텐서 등에서는 '''곱셈이 여러 개다'''(상수배( )[1] , 내적곱(·)[2] , 외적곱(×)[3] , 텐서곱(⊗), 쐐기곱(∧) 등). 논리 연산은 논리곱(AND; ∧), 배타적 논리곱(NAND;↑) 등이 있다.
지금은 사칙연산이라 부르고 있지만, 예전에는 '''가감승제(加減乘除)'''라고 표현했다. 한자 그대로 더하고, 빼고, 곱하고, (제하여) 나눈다는 뜻을 지니고 있다. 여기에는 지수, 괄호, 등호가 들어가지 않는다. 중국에서는 정부승제라고 부른다.
2. 계산 방법 (우선순위)
사칙연산에는 몇 가지 법칙과 우선순위가 존재한다.
예를 들어서 2+2×2의 답은, 6이 정답이다. 8이 아니다.
영미권에서는 위의 우선순위가 BIMDAS, BOMDAS, BEMDAS, PEMDAS[10] 등등의 다양한 약자로 알려져 있는데, 단어 선정에 따라 약자가 달라진다. 일단은 괄호, 지수, 곱/나눗셈, 덧/뺄셈의 약자인데...[11]
2.1. 상세
왜 곱셈과 나눗셈을 먼저 하냐면, '''원래 규칙이 그렇기 때문이다.'''
예를 들어서 어떤 물건이 5개 있는 것을 상대방 2명에게 보여 주고 첫 번째 사람에게는 그 물건의 개수가 처음의 두 배 가 되도록 가져오라고 하고,다른 한 사람에게는 그 물건을 3개 더 가져오라고 한다면 첫 번째 사람은 당연이 두 배(10)이 되도록 5개를 가져올 것이고 다른 한 사람은 당연히 3개를 가져올 것이다. 이 값은 13으로 이는 3[12] +5[13] × 2[14] 를 계산 순서에 맞게 계산한 값 13 으로 5 + 3 × 2를 순서대로 계산한 16 이라는 값이 아니다.
수식을 표현하는 방법에는 여러 방법이 있는데, 일반적으로 우리가 사용하는 방법은 '중위 표기법'이라고 한다.
중위 표기법이란, 수식을
이렇게 표기하는 것이다. 중위 표기법 말고도 전위 표기법과 후위 표기법이 있는데, 위의 수식을 전위 표기법으로 표현해 보면,
으로 표기하고, 후위 표기법으로 표현하면,
이렇게 표기한다.
전위 표기법과 후위 표기법은 '''연산의 우선순위를 수식의 순서에 따라 표현할 수 있다.'''는 장점이 있는데 그 대신, 아주 심각한 문제가 하나 있다. 띄어쓰기를 제대로 안하면 수식이 구분이 안된다. 예를 들어 12+3 을 전위 표기법으로 하면 + 12 3 가 되는데, 띄어쓰기를 잘못하면 +123 이 되고 이는 12+3 과 1+23 을 구분할 수 없게 된다. 띄어 쓰기를 정확하게 해주던가, 구분을 위한 구분자를 써서 +12,3 등의 방법으로 써야 한다.
하지만, 중위 표기법은 연산의 우선순위를 표현하는 것은 불가능하다. 오랫동안 중위 표기법을 써 와서 그래왔는지, 아니면 인간이 보기에 그런지는 몰라도[15] 중위 표기법이 사람이 보기에 편하므로, 우선순위를 표현할 수 있는 전위와 후위 표기법 대신 중위 표기법을 사용하고 있다.
중위 표기법은 표기 자체만으로는 우선순위를 지정할 수 없다. 우선순위를 지정하기 위해서는 괄호나 괄선[16] 을 써야 한다. 하지만 매번 그러한 기호를 사용하게 되면 쓰는 사람이나 읽는 사람이나 불편하다. 따라서 '''일단''' 곱셈과 나눗셈을 덧셈과 뺄셈보다 우선하게 해, 이러한 혼란을 방지하는 것이다.
그렇다고 해서 곱셈과 나눗셈을 덧셈과 뺄셈보다 우선하는 이유가 있느냐? 답은 '''없다.''' 역사적인 산물로 (쓰다보니까) 사람들이 곱셈과 나눗셈을 우선한다라고 정의한 것이다. 덧셈과 뺄셈을 우선해도 상관없다라고 정해졌다면 그렇게 지금까지 이어졌을 것이다. 그렇다면 왜 곱셈과 나눗셈을 우선시하였는가 하면, 복잡한 다항식을 계산하는 경우, 괄호 사용에 있어서 곱셈과 나눗셈을 우선시 하는 것이 괄호 사용을 줄일 수 있었기 때문이다. 계산하기도 그게 더 편했기도 하고.
곱셈이 덧셈보다 상위 연산자이기 때문이라는 해석도 있다. 집합론에서 자연수를 정의할때 제일 먼저 나오는 연산은 '다음수'[17] 라는 연산이다. 그리고, '덧셈'은 다음수 연산을 반복해서 수행하는 것으로 정의한다. 그리고, '곱셈'은 덧셈을 반복하는 것으로 정의하고, '지수'는 곱셈을 반복하는 것으로 정의한다. 즉, 지수 > 곱셈 > 덧셈 > 다음수연산 이라는 연산 차원이 자연스럽게 만들어진다. 높은 차원의 연산을 먼저 수행하는 것은 지극히 당연한 귀결이다. 여기에 비추어볼 때, 그 다음 연산인 테트레이션은 지수보다 계산 순서가 우선한다고 볼 수 있다.
이러한 연산 규칙은 프로그래밍 언어에도 그대로 적용이 된다. 다만 언어에 따라 다소의 차이점이 있기는 하다. (주로 지수 표현, 무리수 및 허수 표현 등)
함수는 특성상 가장 마지막에 계산된다. 함수의 정의역을 받는 괄호는 '''위에서 얘기한 괄호와 우선순위가 똑같기 때문'''.
혼합 계산 문서도 참고하면 좋다.
3. 용례
사칙연산과 괄호로 된 간단한 식을 모양만 좀 비틀어 세계 수학계 안팎을 혼돈의 카오스로 만든 사례로 48÷2(9+3)가 있다.
111+1×2=224 같은 경우에는 방송국에서 실수로 오답을 낸 경우. 정답은 1x2=2에 111을 더해서 113이다.
수포자들이 "수학은 사칙연산만 하면 돼!"라는 망언을 하지만, 당장 2자리 곱셈/나눗셈을 시도해 보면 그마저도 틀리는 사람들을 볼 수 있다. 만일 2자리로 나왔다면 천재가 아닌 이상 암산을 할 경우에는 둘 중 한쪽은 한 자리 수로 바꿔서 한 다음 합치는 방법을 쓰는 게 일반적이다.
기본 사칙연산을 초등학교 고학년 때까지 떼지 못한다면[18] 난산증을 비롯한 학습장애나, 혹은 지능발달 자체를 의심해 봐야 한다. 이런 부류는 고등학교 때 까지도 사칙연산을 제대로 못하는 경우가 있다.
4. 관련 문서
[1] 미분방정식에서는 기울기[2] 미분방정식에서는 발산[3] 미분방정식에서는 회전[4] 즉 괄호 안에서도 이 우선순위가 유지된다. 간단한 예로 괄호 안에 또다시 괄호와 다른 연산이 혼재한다면 괄호 안에서도 다시 괄호를 우선으로 계산해야 한다.[5] 이 법칙은 괄호 형태로 표현되는 항인 행렬에도 똑같이 적용된다. 즉 행렬 내부의 식을 먼저 계산해야 하는 것.[6] 밑이 문자(π, e 등)가 포함된 단항식 또는 다항식이거나, 수 자체가 복잡한 형태(대표적으로 무리수)인 경우[7] 초등학교 때는 나오지 않을 단계이므로 보통 일단은 생략하고 가르친다. 아주 잘 알고 있던 원래 규칙에 중학교 때 어느샌가 이게 더해져 멘붕을 유발한다.[8] 추가적으로, 팩토리얼(계승)과 같은 곱셈 기호의 상위 호환인 모든 연산은 이 순서에 들어간다. [9] 행렬곱, 내적, 외적, 기울기, 발산, 회전 같은 "덧셈이 들어가는 특수한 곱셈"에도 3, 4의 내용이 적용된다.[10] 미국은 주로 이걸 쓴다.[11] 일단 괄호부터가 명칭이 여러 개다. brackets라고 부르는 나라도 있고 parentheses라고 부르는 나라도 있다. (대표적으로 미국이 후자를 쓴다.) 두번째 오는 지수는 더 가관인데, indices, exponents, orders, 등등등. 심지어 명칭이 어디나 똑같은 곱셈/나눗셈(Multiplication/Division)도 둘이 같은 레벨이다 보니 순서를 바꾸어 MD가 DM이 되는 일이 있다고 한다. (BODMAS나 BEDMAS가 될 수 있다는 말.) 다행히 덧/뺄셈에 해당하는 Addition/Subtraction은 순서가 바뀌는 일이 없는 듯하다.[12] 다른 한 사람에게 가져오라고 한 물건의 수[13] 원래 있던 물건의 수[14] 물건을 두 배 하라고 했으니[15] 1+2=3을 예를 들자면 1에 무엇을 할 것인가? 더한다. 무엇을? 2를. 그러면 어떻게 되는가? 3이 된다. 즉 수식의 진행과정이 순차적으로 쉽게 확인이 가능하기 때문이다.[16] $$\displaystyle{\overline{a+b}}\times c$$라고 씀으로써 $$a+b$$를 $$\times c$$보다 먼저 계산하라고 표기하는 식이다. 과거에는 괄호보다 보편적으로 쓰였으나 현재에는 거의 쓰이지 않아 제곱근에만 그 흔적이 남아있다.[17] 프로그래머라면 C++; 같은 표현으로 친숙할 것이다.[18] 단, 분명히 완벽히 할 줄은 아는데 실수해서 틀리는 경우가 많다면 본인이 하기 싫어서 대충 하거나 꼼꼼하지 못한 성격 때문일 가능성이 높으며, 중학교 2학년 이후 수학을 못하는 건 어려운 수학에 굴복한 포기의 결과일 가능성이 높다.