1. [전산] 연산 (演算) 이란?
ㅇ 컴퓨터(프로그램)에서, 데이터에 대한 연산/조작은,
- 통상의 사칙연산 이외에,
- 값(value)에 대응되는 메모리 셀 간 이동,비교,교환,연결,할당 뿐 만 아니라,
- 논리 판단, 자료형 판단, 문자열 처리, 이미지 편집 등이 추가적으로 요구됨
ㅇ 주요 연산 종류
- 산술 연산 (가감승제,나머지,거듭제곱 등)
- 비교 연산 (같음/다름,대/소의 구분)
- 논리 연산 (AND,OR,NOT,XOR)
- 교환 연산 (Swap)
- 비트 연산 (비트 단위 이동,비트 논리 연산)
- 시프트 연산 (비트/바이트/워드 단위 이동) 등
2. [전산] 프로그램 내 연산,연산자,피 연산자 이란?
ㅇ 연산자 (演算子)
- 프로그램 내 데이터 조작에 쓰이는 기호
. 특정 작업을 수행 지시하는 기호
* (연산자 사용 이유)
. 연산자는, 간결하게 의미를 전달할 수 있는 편리한 기호로써, 함수 보다 쓰기 쉬움
.. 연산자는, 피 연산자를 받아들여, 연산 결과값을 리턴하므로 함수와 성격이 같음
* (언어별 연산자 例)
. C 연산자, 자바스크립트 연산자, MATLAB 연산자 등 참조
ㅇ 피 연산자
- 연산자의 작업 대상
. (변수,상수,리터럴,표현식 등)
ㅇ 연산의 평가 및 결과 반환
- 표현식 단위로 평가(evaluation)되고,
- 그 결과 값을 반환함
3. [전산] 프로그램 연산자 주요 종류
ㅇ 대입 연산자, 할당 연산자 (Assignment Operator)
- (대입) =
* `=` 기호는 수학에서의 동치가 아니라, 대입문에 쓰이는 연산자 임
. (변수에 값을 할당하기 위해 쓰임)
ㅇ 산술 연산자 (Arithmetic Operator)
- (덧셈) +, (뺄셈) -, (곱셈) *, (나눗셈) /, (나머지) %, (거듭제곱) ** 또는 ^
* 산술 연산자는 항상 엄격하게 `연산 우선순위`에 따라 수행됨
ㅇ 단항 연산자 (Unary Operator)
- (양수) +, (음수) -, (증가) ++, (감소) --
* 例) `= ++i`(전위 증가 단항 연산자), `= i++`(후위 증가 단항 연산자) 비교
. `= ++i` : 먼저 평가하고(먼저 i에 1을 더함), 그 다음에 대입
. `= i++` : 먼저 대입하고, 그 다음에 평가(후에 i에 1을 더함)
* 例) 후위 단항 연산자인 i++ 및 i-- 결과에 따른 i 값이 같음 (즉, i 자체는 변화 없음)
ㅇ 삼항 연산자 (Ternary Operator) 또는 조건 연산자
- [조건식] ? [참일 경우 반환값] : [거짓일 경우 반환값]
ㅇ 비교 연산자 (Comparing Operator) 또는 관계 연산자 (Relational Operator)
- (greater than) >, (greater than or equal to) >=
- (less than) <, (less than or equal to) <=
- (equal to) ==, (not equal to) ~= 또는 !=
ㅇ 논리 연산자 (Logical Operator)
- & 또는 && (논리곱/AND)
- | 또는 || (논리합/OR)
- ! 또는 ~ (논리부정/NOT)
- ^ (배타논리합,XOR)
ㅇ 비트 연산자 (Bit Operator)
- 비트 단위 논리 연산자
. ~ (비트 단위 부정), & (비트 단위 논리곱), | (비트 단위 논리합), ^ (비트 단위 XOR)
- 비트 간의 시프트 연산자
. << (좌로 1 비트 이동), >> (우로 1 비트 이동)
ㅇ 그룹 연산자 (Group Operator) : ( )
- 계산 순서를 명시적으로 우선 지정
* 연산의 결합 순위를 명시적으로 지정 가능
ㅇ 주소 연산자 (Address Operator) : *, & (C 언어에 한 함)
4. [전산] 프로그램 연산자의 우선순위와 결합순서
※ [참고] ☞ C 연산자 등 참조
- 표현식 내 복수의 연산자들이 있을 때,
- 어떤 순서로 처리할 것인가를 결정하는 것
ㅇ 우선 순위
- 연산자별로 매겨진 순위(등급)
* [참고] 통상, 곱셈이 덧셈 보다, 거듭제곱이 곱셈 보다, 우선순위가 높음
. (덧셈 < 곱셈 < 거듭제곱)
ㅇ 결합 순서
- 여러 결합된 연산자들이 동일 우선순위일 때,
- 어떤 방향으로 연산을 순서화할 것을 정하는 규칙