프로그램 내에서 사용자가 사용할 수 있는 연산자에는 산술, 논리/비교, 기타 연산자로, 총 3 종류가 있습니다.
(1) 산술 연산자
아래 표에서 결과값은 변수 A와 B가 각각 값 3 (0000 0000 0000 0011), 4 (0000 0000 0000 0100)를 저장하고 있는 경우의 연산 결과입니다.
나머지 연산과 모든 Bitwise 연산은 32BIT 정수형 데이터로 변환된 후 계산됩니다.
연산자 | 기능 | 표현예시 | 설명 |
~ | 1의 보수 | ~A | A가 0000 0000 0000 0011b 이므로, 결과는 1111 1111 1111 1100b 입니다. |
+ | 더하기 | A+B | A와 B를 더한 값을 의미합니다. 결과는 7 입니다. |
- | 빼기 | A –B | A에서 B를 뺀 값을 의미합니다. 결과는 -1입니다. |
* | 곱하기 | A*B | A와 B를 곱한 값을 의미합니다. 결과는 12입니다. |
/ | 나누기 | A / B | A를 B로 나눈 값을 의미합니다. 결과는 0.75입니다. |
% | 나머지 | A % B | A를 B로 나눈 나머지를 의미합니다. 결과는 3입니다. |
& | Bitwise AND | A & B | A와 B를 BIT 단위로 AND 연산을 합니다. 결과는 0입니다. |
| | Bitwise OR | A | B | A와 B를 BIT 단위로 OR 연산을 합니다. 결과는 0111b (= 7) 입니다. |
^ | Bitwise XOR | A ^ B | A와 B를 BIT 단위로 XOR 연산을 합니다 결과는 0111b (= 7) 입니다. |
<< | 좌측 Shift | A << B | A의 값(BIT)을 좌측으로 B 만큼 이동한 값을 의미합니다. 우측은 0으로 채워집니다. 결과는 0011 0000b (= 48) 입니다. |
>> | 우측 Shift | A >> B | A의 값(BIT)을 좌측으로 B 만큼 이동한 값을 의미합니다. 좌측은 0으로 채워집니다. 결과는 0입니다. |
(2) 논리/비교 연산자
다음 표에서 결과값은 각각 1 (True)와 0 (False)의 값을 저장하고 있는 경우의 연산 결과입니다. Xpanel은 논리 연산을 위한 별도의 값을 처리하지 않습니다. 즉, 0이 아닌 값은 모두 정논리 (True)로 처리합니다. 오직 0만 부논리 (False)로 인식합니다.
연산 결과가 정논리 (True)일 때 그 값은 항상 1입니다.
연산자 | 기능 | 표현예시 | 설명 |
&& | Logical AND | A && B | A와 B가 모두 참인 경우 1, 그밖의 경우에는 0 입니다. |
|| | Logical OR | A || B | A와 B가 모두 거짓인 경우 0, 그밖의 경우에는 1 입니다. |
< | 작다 | A < B | A가 B보다 작으면 1, 아니면 0 입니다. |
> | 크다 | A > B | A가 B보다 크면 1, 아니면 0 입니다. |
<= or =< | 작거나 같다 | A <= B | A가 B보다 작거나 같으면 1, 아니면 0 입니다. |
>= or => | 크거나 같다 | A >= B | A가 B보다 크거나 같으면 1, 아니면 0 입니다. |
== | 같다 | A == B | A가 B이면 1, 아니면 0 입니다. |
!= | 같지 않다 | A != B | A가 B가 아니면 1, 같으면 0 입니다. |
(3) 기타 연산자
연산자 | 기능 | 표현예시 | 설명 |
= | 저장 | A = B | B의 값을 A에 저장(기록) 하고 연산의 결과로 처리합니다. |
저장 연산자는 다음과 같이 연속하여 사용할 수 있습니다.
A = B = C;
이 경우 A와 B의 값은 C의 값으로 기록됩니다. 즉, 연산자 오른쪽에 위치한 수식의 값을 “=” 연산의 결과값으로 처리합니다. 위의 예는 다음과 같은 순서로 프로그램 내부에서 연산됩니다.
B ← C
A ← B
“=” 연산자의 특성 때문에 다음 예와 같이 검출되지 않는 프로그램 오류가 빈번하게 발생합니다. 이 경우 A와 B의 값이 같지 않음에도 IF 문의 연산 결과는 True가 될 수 있으며, 원하지 않는 값이 A에 기록될 수도 있습니다.
//=================== //검출되지 않는 프로그램 예 //=================== If (A=B) // A와 B의 값이 동일한지의 여부를 검사하는 부분, (A==B)의 오기 { … } |