Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

프로그램 내에서 사용자가 사용할 수 있는 연산자에는 산술, 논리/비교, 기타 연산자로, 총 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

 

(blue star)

“=” 연산자의 특성 때문에 다음 예와 같이 검출되지 않는 프로그램 오류가 빈번하게 발생합니다. 이 경우 A와 B의 값이 같지 않음에도 IF 문의 연산 결과는 True가 될 수 있으며, 원하지 않는 값이 A에 기록될 수도 있습니다.

 

//===================

//검출되지 않는 프로그램 예

//===================

If (A=B) // A와 B의 값이 동일한지의 여부를 검사하는 부분, (A==B)의 오기

{

}