본문 바로가기

별걸다하는 IT/프로그래밍언어

[Java, C, C++ 강좌] 연산자란? 연산자 종류 - 단항 연산자, 이항연산자, 삼항연산자

반응형

[C, C++, 프로그래밍 기초 완전 정복 목차]

[ 연산자 Operator ]

안녕하세요~!! 오늘은 연산자에 대해서 배워볼까 합니당 ㅎㅎ

서론.. 들어가기 전

컴퓨터는 원래 계산기였어요 ㅎㅎ

지금이야 뭐 워낙 빠르게 발전해서 정말 다양한 업무들을 대신 수행해주고 있지만. 현재의 컴퓨터로 발전하게 기원을 거슬러 거슬러 올라가면 시초는 요 아이입니다.

파스칼 계산기

컴퓨터(Computer)라는 단어 자체도 '계산하다(Compute) + er(하는 사람 또는 주체) '가 결합된 단어로 계산기라는 뜻이예요 ㅎㅎ

계산기는 무엇을 하죠?? 더하고 빼고 나누고 !! 요런 연산을 하죠. 예전에 컴퓨터는 계산하는 것이 주된 역할이었지만, 현재도 컴퓨터의 가장 중요한 역할은 사람이 할 수 없는 복잡한 수식을 계산하는 일이예요~!

연산자랑 피연산자

연산이란, 프로그램에서 데이터를 처리하여 결과를 산출하는 걸 말합니다.

연산자란, 연산을 수행하기 위해 사용되는 문자, 즉 대상을 두고 계산을 할 때 사용되는 기호를 말해요.

그리고 연산을 당하는(?) 대상을 피연산자라고 합니다 ㅎㅎ

왼쪽 사진을 참고하면 쉽게 이해할 수 있어요 :)

 

아마 우리가 익숙하게 알고 있는 연산자는, 더하기, 빼기, 나누기, 곱하기 사칙연산일겁니다. 초등학생때부터 주구장창 수학시간에 현재도 수행하고 있는 연산들이니까요 ㅎㅎ

 

근데 컴퓨터는 연산자의 종류를 매우 다양하게 가지고 있어요.

더 복잡한 수식을~! 더 효율적인 계산 로직을 짜기 위해서 사람이 여러 연산자를 사전적으로 정의해두었습니다.

 

원래 연산자가 어찌보면 단축키 같은거잖아요?

'3+3+3+3+3'라는 계산을 수행하는데 저렇게 표현하기 너무 귀찮(?)으니까 곱하기라는 연산자를 만들어서 '3*5'로 퉁친 것처럼 ㅋㅋ (ㅎㅎ제가 이해하는 방식..ㅋㅋ)

컴퓨터도 계산을 효율적으로 나타내고 수행하기 위해 다양한 연산자를 가지고 있습니다.

연산자의 종류

컴퓨터에서 연산자는 크게 단항연산자, 이항연산자, 삼항연산자로 구분할 수 있어요.

차이는 뭐.. 연산을 수행하는 피연산자가 한 개 대상이냐, 두 개가 대상이냐, 세 개가 대상이냐 입니다. ㅎㅎ

 

간단한 example

▶대표적인 단항 연산자로는 부호연산자를 예로 들 수 있어요.

 

 

어라? 단순히 부호를 나타내는 플마 기호인데 이것도 연산자야?

--> 네 맞아용

 

(컴퓨터는 이진수로 수를 표현하기 때문에, 연산자를 만나면 내부적으로 많은 행위를 하게 된답니다! +4는 0100이지만 -4는 1100 이거든요. 연산자를 보고 내부적으로 처리를 맞게 해주는거예요 ㅎㅎ )

 

▶대표적인 이항 연산자로는 우리가 이미 많이 써본 대입연산자가 있어요.

출처:  http://www.c4learn.com/c-programming/c-assignment-operator/

'20이라는 값을 value라는 변수에 대입한다' 라는 코드입니다.

위의 단항연산자는 피연산자가 '5'밖에 없었지만

여기서 피연산자는 value와 20으로 두 개네요!

'=' 대입 연산자 하나에 피연산자가 두 개 이므로 이항연산자입니다.

 

▶삼항연산자는 딱 한개밖에 없어요. 조건연사자( ? : ) 입니다.

삼항 연산자에 관한 내용은 추후, if문과 같은 조건식 배울 때 다뤄질 예정이예요.

(하단에 가면 삼항연산자를 다룬 조건문 포스팅이 링크되어 있습니다)

 

★ 오늘 포스팅에서는 전체 연산자를 간략하게 OVERVIEW 해볼거예요 ㅎㅎ

각 연산자 종류별 자세한 내용은 맨 밑에 참조 링크를 참고하세요

단항 연산자의 종류

먼저 단항 연산자 종류에 대해 훑어봅시다. OVERVIEW~

연산자 종류

연산자

피연산자 수

부호 연산자

+(양수), -(음수)

단항

증감 연산자

++(1 증가), -- (1 감소) 

단항

형변환 연산자

(type)

단항 

논리 연산자 

! (단항)

단항도 있고 이항도 있음

비트 연산자

~(단항)

단항도 있고 이항도 있음

연산자는 종류별로 아마 포스팅이 따로 들어갈건데, '부호 연산자'처럼 포스팅을 새로 하나 만들만큼, 내용이 길지 않은 것은 잠깐 보고 넘어갑시당.

※ 형변환 연산자

피연산자의 자료형이 다를 때, 자료형을 일치시켜주는 연산자입니다.

int num2 = 10;
float num1 = (float) num2; //num2를 float 타입으로 변환 

↓ 해당 포스팅에서 형변환 관련된 부문들을 다루고 있어요 ㅎㅎ 

 

 

※ 증감연산자

증감 연산자에 대해서는 전위 후위 연산자라고 해서 나중에 더 자세히 배우게 될거예요 ㅎㅎ

'value = value +1'과' value++'과 같고

'value = value -1'과 'value--'와 같습니다. 

-- 자바 JAVA
class Main {
	public static void main (String[] args) throws java.lang.Exception {
	  int value = 0;
	  value++; //증감연산자!
	  System.out.println(value);
	}
}
-- C++
#include <iostream>
using namespace std;
int main() {
   int value =0;
   value++;
   cout<<value<<endl;
   return 0;
}

 

value가 0이었는데 증감연산자로 인해 1이 추가되어 결과로는 1이 출력됩니다.

이항 연산자의 종류

연산자 종류

연산자

피연산자 수

산술 연산자

+(더하기), -(빼기), *(곱하기), /(나누기), %(모듈)

이항

대입 또는

복합대입연산자

= , +=, -=, *=, /=, %=, &=. |=, ^=, <<=, >>= 등

이항

비교 연산자

==, !=, >, <, =>, <=

instanceof(자바의 경우)

이항

논리 연산자 

단항: !

이항: &&, ||

단항도 있고 이항도 있음

비트 연산자

단항: ~

이항: &, |, ^

단항도 있고 이항도 있음

쉬프트 연산자

>>, <<, >>>

이항

문자열 연산자

+ (Java의 경우)

이항

※ 산술연산자 (Arithmetic Operator)

우리가 잘 알고 있는 사칙연산! 더하기 빼기 등등.. 요런게 산술연산자입니다.

참고로 산술연산자에서 보이는 '*'는 곱하기 기호 '×' 와 같습니다.

그리고 '/'는 나누기 '÷' 예요 ㅎㅎ

산술연산자에는, +(더하기),-(빼기),*(곱하기),/(나누기),%(나머지구하기) 요렇게 다섯개가 있습니다~

↓ 해당 포스팅에서 산술연산 관련된 부문들을 다루고 있어요 ㅎㅎ 

※ 복합 대입 연산자

대입 연산자(=)는 많이 봤죠?

대입 연산자들 중에서는 다른 연산자와 합쳐진 형태의 대입 연산자도 존재합니다. --> 요개 복합 대입 연산자들~

요렇게 산술연산과 대입연산이 합쳐진 복합 대입 연산자들 외에도 비트 연산자랑 합쳐진 것들도 있고 많습니당 ㅎㅎ

※ 비교연산자 (Comparison Operator)

관계연산자라고도 하는데, 대소와 동등 관계를 따지는 연산자입니다.

a보다 b가 큰지? a와 b가 같은지? 요런걸 판별해줘요

출처 :  https://programmer-seva.tistory.com/8

대부분 수학시간에 배웠던 거랑 유사해요. 다만 다른 점이 몇 개 있는데..

 

● 대소 부문

우리 수학시간에 했을 때에는 '크거나 같다' 또는 '작거나 같다'를 위 수식으로 판별했을 거예요~~

그런데 컴퓨터 프로그램을 작성할 때에는 '<='와 '>=' 기호를 사용한다는거~~

 

● 등가비교 부문

수학시간에는 a=b 하면 a와 b가 같다! 였는데, 이렇게 해버리면 대입연산자(=)와 기호가 겹치잖아요!

그래서 동등을 표현할 때 우리는 '=='로 비교합니다.

요거는 NOT연산자를 함께 써서 '!=' 이렇게 표현해요.

이것만 알고 계시면 나머지는 다 동일합니다.

--C언어
#include <stdio.h>
int main() {
    int a=10, b=20;
    printf("%d\n", a < b); //참이므로 1 
    printf("%d\n", a > b); //거짓이므로 0 출력
    return 0;
}

 

자바의 경우

비교 연산자는 참이면 1(true), 거짓이면 0(false)를 반환합니다.

비교 연산자에 대해서도 좀 설명하고 싶은 부문이 있어서 포스팅을 따로 뺄 예정이예요.

※ 논리연산자

논리 연산자란 AND(논리곱), OR(논리합), NOT(논리부정)을 표현하는 연산자입니다. 여기서 논리부정인 (!)은 단항연산자예요 ㅎㅎ

&&

AND(논리곱)

이항연산자

둘다 참일 때 참

A && B

A와 B가 참일 때 참

||

OR(논리합)

이항연산자

둘 중 하나라도 참이면 참

A || B

A가 참이거나 B가 참일 때 참

!

NOT(논리부정)

단항연산자

참이면 거짓, 거짓이면 참

!A

A가 참이면 거짓 반환

A가 거짓이면 참 반환

특히 조건식과 같이 잘 활용되는 연산자입니다 ㅎㅎ 요 친구도 추후에 디테일하게 다뤄볼게요

※ 비트연산자

비트 단위로 연산을 진행할 때 사용되는 연산자예요 ㅎㅎ 비트(bit)는 컴퓨터 기억장치의 최소 단위로 0 또는 1만 구분합니다.  

비트 단위에서 AND(&), OR(|), XOR(^), NOT(~) 연산을 수행합니다.

true 반환 기준: and는 둘 다 1일때, or는 둘 중에 하나만 1이어도 참, XOR은 두 비트가 다르면 참

↓ 해당 포스팅에서 비트 연산 관련된 부문들을 다루고 있어요 ㅎㅎ 

AND 연산자: https://jhnyang.tistory.com/162

 

[프로그래밍C++,Java 생기초] 비트 연산자1(bitwise operator)- & AND연산자 개념 정리 및 활용, 실습 예제(

[Java, C, C++ 프로그래밍 강좌 목차 편, 링크 모음] 오늘 프로그래밍 기초 편에서는 연산자 중 비트 연산자에 대해 다뤄볼게요 처음에 프로그래밍을 배울 때 대입연산자나 산술연산자 같은 경우는

jhnyang.tistory.com

※ 문자열 연산자

문자열을 합칠 때 사용하는 '+'연산자는 C언어나 C++에서 지원하지 않아요

[C언어]
printf("Hello"+"friends"); -> 에러 
[C++]
cout<<"Hello"+"friends"<<endl; -> 에러
[Java]
System.out.println("hello"+"friends"); -> OK

자바나 다른 언어에서 지원하는 연산자입니다. ㅎㅎ

삼항 연산자

삼항 연산자는 딱 하나뿐인데요 , 조건식에서 사용됩니다. 조건문 배우는 포스팅에서 다루게 될거예요 ㅎㅎ

간단하게만 보고 넘어가자면 삼항연산자(?:)는 요런 구조로 되어있어서 피연산자가 3개가 됩니다.

조건식이 참이면 '?'뒤에 있는 식1을 수행하고 거짓이면 ':'뒤에 있는 식2의 명령을 수행하라는 뜻입니다.

 

이번 포스팅에서는 연산자 개념에 대해서 살펴보고

그 종류가 무엇이 있는지 대략적으로만 OVERVIEW하는 시간을 가졌어요 ㅎㅎ

각각의 종류별 연산자에 대해서는 좀 더 디테일한 포스팅에서 파헤쳐보도록 해요~!!

참고)

산술연산자 그리고 형변환

 

[Java, C, C++ 기초 강좌] 산술연산자 그리고 형변환 ( + 모듈연산, 0으로 나누기)

[ C, C++ 완전정리 목차 ] 안녕하세요~~! 오늘도 방문해주신 여러분들 감사합니다. ~ :) 저번 연산자 포스팅에서 연산자를 전반적으로 훑어봤는데요~! 이번에는 하나하나 들어가보려고 합니다. 오늘은 산술연산자..

jhnyang.tistory.com

 

[프로그래밍C++,Java 생기초] 비트 연산자1(bitwise operator)- & AND연산자 개념 정리 및 활용, 실습 예제(bitset, toBinaryString)

 

[프로그래밍C++,Java 생기초] 비트 연산자1(bitwise operator)- & AND연산자 개념 정리 및 활용, 실습 예제(bitset, toBinaryString)

[Java, C, C++ 프로그래밍 강좌 목차 편, 링크 모음] 오늘 프로그래밍 기초 편에서는 연산자 중 비트 연산자에 대해 다뤄볼게요 처음에 프로그래밍을 배울 때 대입연산자나 산술연산자 같은 경우는 빠르게 배워요..

jhnyang.tistory.com

그럼 오늘은 여기까지~~! 

공감, 댓글, 광고보답은 더 질좋은 포스팅을 공유하는데 힘이됩니다.

 

반응형