<연산자란?>

 

연산을 수행하는 기호이다. C언어에서 연산자란 프로그램의 논리식이나 산술식을 표현하고 처리하기 위해서 제공되는 다양한 기호들을 말한다.

 

1. 대입 연산자

데이터를 저장하는 연산자다.

<실습>

#include <stdio.h>

int main()

{

   int i=0, j=0;   // 변수 i j 0을 대입한다.

   printf("i=%d, j=%d \n", i, j);   // 출력

   i=10;   // 변수 i  10을 대입 (대입연산자 = 을 사용)

   j=20;   // 변수 j 20을 대입

   printf("i=%d, j=%d \n", i, j);

return 0;

}

 

-결과-



 

 

2. 산술 연산자

산술 연산자는 말 그대로 산술(더하기빼기곱하기나누기나머지) 수행하는 연산자이다.

<실습>

#include <stdio.h>

int main()

{

   int i=2, j=4;   // 변수 i 2 j 4를 대입한다.

   printf("i=%d, j=%d \n", i, j);   // 출력

   printf("i+j 연산자 결과 :  %d\n", i+j);   // 덧셈 연산자

   printf("i-j 연산자 결과 :  %d\n", i-j);   // 뺄셈 연산자

   printf("i*j 연산자 결과 :  %d\n", i*j);   // 곱셈 연산자

   printf("j/i 연산자 결과 :  %d\n", j/i);   // 나눗셈 연산자

   printf("i%%j 연산자 결과 :  %d \n", i%j);   // 나머지 연산자

return 0;

}

 

-결과-



 

 

3. 복합 대입 연산자

산술 연산자와 대입 연산자를 하나로 나타내는 기호이다.

 

복합 대입 연산자

같은 표현

설명

a=a+b

a+=b

a+b를 수행 후, a에 값을 저장

a=a-b

a-=b

a-b를 수행 후, a에 값을 저장

a=a*b

a*=b

a*b를 수행 후, a에 값을 저장

a=a/b

a/=b

a/b를 수행 후, a에 값을 저장

a=a%b

a%=b

a%b를 수행 후, a에 값을 저장

 

 

 

4. 증감 연산자

++, --기호를 이용하여 1을 증가시키거나 감소시키는 연산자이다.

 

증감 연산자

설명

a++

a를 먼저 연산키기고 증가

++a

a를 먼저 증가 시키고 연산

a--

a를 먼저 연산키기고 감소

--a

a를 먼저 증가 시키고 감소

 

 

<실습>

#include <stdio.h>

int main()

{

   int i=1, j=1;

   int a, b;

 

   a=++i;   // i의 값을 선 증가 후에 a에 그 값을 대입한다.

   printf("%d %d \n", a, i);   // 결과 2 2

 

   b = j++;   // j의 값을 선 연산(대입 연산)후에 증가시킨다.

   printf("%d %d \n", b, j);   // 결과 1 2

   return 0;

}

 

-결과-



 

 

5. 관계 연산자

관계를 비교하여 참(1)과 거짓(0)으로 결론 짓는 연산자

 

관계 연산자

설명

>

a>b

a b보다 클지를 비교

<

a<b

a b보다 작을지를 비교

>=

a>=b

a b보다 크거나 같을지를 비교

<=

a<=b

a b보다 작거나 같을지를 비교

==

a==b

a b가 같을지를 비교

!=

a!=b

a b가 같지 않은지를 비교

 

 

 

6. 논리 연산자

논리 연산자에는 &&연산자, ||연산자, !연산자가 있다.

&&연산자는 AND연산자이며 논리곱이라 한다둘 중 하나라도 거짓이면 거짓으로 판단.

||연산자는 OR연산자이며 논리합이라 한다둘 중 하나라도 참이면 참으로 판단.

!연산자는 NOT 연산자이며 논리 부정이다 한다참이면 거짓이고 거짓이면 참이다무조건 반대!

 

&& 연산자

피연산자

연산자

피연산자

결과

0

&&

0

0

0

&&

1

0

1

&&

0

0

1

&&

1

1

|| 연산자

0

||

0

0

0

||

1

1

1

||

0

1

1

||

1

1

연산자

 

!

0

1

 

!

1

0

 

 

#include <stdio.h>

int main()

{

   int a = 1, b = 2, c = 3;

   int result1, result2, result3;

 

   result1 = (a>0) &&(b>1);   // 1&&1 = 1

   result2 = (a=1) || (b>1);   // 0||1 = 1

   result3 = !c;   // !3 = 0 (0이 아닌 값들은 다 참으로 인식)

 

   printf("result1 = %d \n", result1);

   printf("result2 = %d \n", result2);

   printf("result3 = %d \n", result3);

   return 0;

}

 

-결과-



 

 

7. 조건 연산자

조건 연산자의 구조는 "조건식 ? 1 : 2" 이다.

이 의미는 조건식이 참일 경우 식1을 수행하고거짓일 경우 식2를 수행하라는 의미이다.

#include <stdio.h>

int main()

{

   (2>3) ? printf(" \n") : printf("거짓 \n");   // 2 3보다 작으므로 거짓이 출력

   return 0;

}

 

-결과-



 

 

8. 비트 연산자

현대의 모든 컴퓨터는 전자식 컴퓨터로 전기 혹은 전자 신호를 이용하여 저장하고 관리하는데 전류가 흐르는 상태를 1, 흐르지 않는 상태를 0으로 표현할 수 있기 때문에 모든 정보를 1 0으로 저장하고 처리한다.

비트란?

컴퓨터는 모든 신호를 2진수로 고쳐서 기억하는데 비트는 2진수 값 하나를 저장할 수 있는 최소 메모리 공간을 말한다.

비트 1개는 나타낼 수 있는 2진수는 0 또는 1이다.

그렇다면 비트 2개로 나타낼 수 있는 2진수는? 00 01 10 11 4개이다.

, N개의 비트는 2 n 으로 나타낼 수 있는 것이다.

 

이러한 비트 연산자는 비트 단위로 처리하는 연산자로 하드웨어와 밀접하게 관련된 각종 처리를 쉽게 해주고메모리 공간을 줄여서 성능을 높여 준다.

 

비트 연산자

연산식

설명

&

a&b

비트 단위 AND 연산

0&0=0, 0&1=0, 1&0=0, 1&1=1

|

a|b

비트 단위 OR 연산

0|0=0, 0|1=1, 1|0=1, 1|1=1

^

a^b

비트 단위 XOR 연산

0^0=0, 0^1=1, 1^0=1, 1^1=0

~

~a

비트 단위 NOT 연산

~1=0, ~0=1

<<

a<<2

왼쪽으로 2칸 이동

실습을 통해 알아보자

>>

a>>1

오른쪽으로 1칸 이동

실습을 통해 알아보자

 

 

 

<실습>

<< >>연산자의 실습을 해보자.

#include <stdio.h>

int main()

{

   int a=10, b=10, c=-10;

   int result1, result2, result3;

   result1 = a<<2;

   result2 = b>>2;

   result3 = c>>2;

   printf("result1 = %d \n", result1);

   printf("result2 = %d \n", result2); 

   printf("result3 = %d \n", result3);

   return 0;

}

<<풀이

 여기서! 10 2진수로 나타내면 다음과 같다.

 0 0 0 0 1 0 1 0  이것을 왼쪽으로 두 칸 옮긴다.

 0 0 1 0 1 0 ? ? 이렇게 될 것이다왼쪽 시프트의 경우 무조건 빈 자리가 생기면 0으로 채운다.

 0 0 1 0 1 0 0 0 이렇게 된다. -> 십진수로 바꾸면 40이다.

>>풀이

 여기서! 10 2진수로 나타내면 다음과 같다.

 0 0 0 0 1 0 1 0  이것을 오른쪽으로 두 칸 옮긴다.

 ? ? 0 0 0 0 1 0 이렇게 될 것이다오른쪽 시프트의 경우 빈 자리가 생기면 양수는 0으로 채운다.

 0 0 0 0 0 0 1 0 이렇게 된다. -> 십진수로 바꾸면 2이다.

>>풀이 2

 여기서! -10 2진수로 나타내면 다음과 같다.

 1 1 1 1 0 1 1 0 이것을 오른쪽으로 두 칸 옮긴다.

 ? ? 1 1 1 1 0 1 이렇게 될 것이다오른쪽 시프트의 경우 빈 자리가 생기면 음수는 1으로 채운다.

 1 1 1 1 1 1 0 1 이렇게 된다. -> 십진수로 바꾸면 -3이다.



posted by 경원구