본문 바로가기
java/개념

연산

by unhyepnhj 2024. 4. 30.

연산

- 주어진 식(expression)을 계산하여 결과를 얻어내는 과정

 


연산자

 

1. 산술 연산

  • 더하기: +
  • 빼기: -
  • 곱하기: *
  • 나누기: /
  • 나머지: %

※/와 % 응용

- 10의 자리와 1의 자리 분리

68/10 = 6		//몫
68%10 = 8		//나머지

- 홀수 판단

int r = n%2		//r이 1이면 n은 홀수, r이 0이면 짝수

 

2. 증감 연산

- 1을 증가 또는 감소시키는 연산

  • 1 증가: ++
  • 1 감소: --

※전위 연산자 vs 후위 연산자

- 전위 연산자: 연산자가 변수의 앞에 있음, 연산 후의 값 반환

- 후위 연산자: 연산자가 변수의 뒤에 있음, 연산 전의 값 반환 

 

3. 대입 연산

- 연산자의 오른쪽 식의 결과를 왼쪽에 있는 변수에 대입 

int a = 1, b = 3;
a = b;		//b를 a에 대입하여 a=3
a += b;		//a=a+b. a=6, b=3

 

4. 비교 연산

- 두 피연산자를 비교하여 true 또는 false의 논리 값을 내는 연산

 

5. 논리 연산

- 논리 값을 대상으로 AND, OR, XOR, NOT의 논리 연산을 하여 논리 값을 내는 연산 

 

※비교 연산과 논리 연산의 복합 사례

(age >= 20) && (age < 30)				//나이(int age)가 20대인 경우
(c >= 'A') && (c <= 'Z')				//문자 (char c)가 대문자인 경우
(x >= 0) && (y >= 0) && (x <= 50) && (y <= 50)		//(x, y)가 (0, 0)과 (50, 50)의 사각형 내에 있음

 

6. 조건 연산

- 3개의 피연산자로 구성

- 삼항(ternary) 연산자라고도 함

condition ? opr2 : opr3

- 조건문(condition)이 true이면 해당 식의 결과 값이 opr2, false이면 opr3이 됨

- opr2나 opr3은 식이 될 수도 있고 값이 될 수도 있음

//예시
int x = 5;
int y = 3;
int s = (x>y) ? 1: -1;		//(x>y)가 true이므로 1이 s에 대입됨

 

7. 비트 연산

  • 비트 논리 연산
  • 비트 시프트 연산

- 비트: 2진수의 한 자리

- 비트 논리 연산: 피연산자의 각 비트들의 논리 연산(AND, OR, XOR, NOT)

 

- 비트 시프트 연산: 3개의 연산자를 사용하여 새로운 비트를 삽입하며 비트의 자리를 이동  

  • 피연산자로 byte, short, int, long, char 타입만 가능(float, double, boolean 불가)

  • << 연산자: 각 비트를 왼쪽으로 이동(LSB에 항상 비트 0 삽입) 
byte a = 5;
byte b = (byte)(a<<2);		//a 값을 왼쪽으로 2비트 이동 -> b = 20
  • >>> 연산자: 각 비트를 오른쪽으로 이동(MSB에 항상 비트 0 삽입) 
byte a = 20;
byte b = (byte)(a>>>2);		//a 값을 오른쪽으로 2비트 이동 -> b = 5
  • >> 연산자: 오른쪽 시프트 연산자이지만 MSB에 시프트 이전의 최상위 비트가 그대로 삽입
byte a = 20;
byte b = (byte)(a>>2);		//a 값을 오른쪽으로 2비트 이동 -> b = 5
byte c = (byte)0xfg;		//(0xf8)₁₆ = (-8)₁₀
byte d = (byte)(c>>2);		//c를 오른쪽으로 2비트 이동 -> d = 0xfe = (-2)₁₀


예제 2-5 초 단위의 정수를 입력받고 몇 시간, 몇 분, 몇 초인지 출력하는 프로그램 작성 

 

예제 2-6 다음 코드의 실행 결과

 

예제 2-7 다음 코드의 실행 결과

 

예제 2-8 다음 코드의 실행 결과

 

예제 2-9 다음 코드의 실행 결과

'java > 개념' 카테고리의 다른 글

반복문  (0) 2024.05.02
조건문  (0) 2024.04.30
키 입력  (0) 2024.04.30
데이터 타입  (0) 2024.04.29
식별자  (0) 2024.04.29