#3 연산자 파훼법

Shinho.Bang·2021년 9월 26일
0

live-study

목록 보기
3/3

🙆‍♂️ 목표

자바가 제공하는 다양한 연산자 학습


🤔 학습내용

  • 산술 연산자
  • 비트 연산자
  • 관계 연산자
  • 논리 연산자
  • instanceof
  • assignment(=) operator
  • 화살표(->) 연산자
  • 3항 연산자
  • 연산자 우선 순위
  • Java 13. switch 연산자

산술 연산자

👀 산술 연산자(Arithmetic Operators)는 수학적인 계산에 사용되는 연산자다.

java에서 산술연산자는 어떻게 사용할까? 아래 java code로 살펴보자.

int a = 13;
int b = 4;

System.out.println(a + b); // 17
System.out.println(a - b); // 9
System.out.println(a * b); // 52
System.out.println(a / b); // 3
System.out.println(a % b); // 1

정수형 byte short long 모두 동일하게 적용된다.

😲 실수형은?

double a = 13;
double b = 4;

System.out.println(a + b); // 17.0
System.out.println(a - b); // 9.0
System.out.println(a * b); // 52.0
System.out.println(a / b); // 3.25
System.out.println(a % b); // 1.0

🚫 주의사항

  • ArithmeticException
 5 / 0 or 5 % 0 // 정수형
  • Infinity (∞)
 5 / 0.0 // 실수형
  • NaN (Not of Number)
 5 % 0.0 // 실수형

연산 결과가 Infinity 또는 NaN 인지 확인하려면 아래와 같은 메서드를 사용하여 확인이 가능하다.

FLoat.isInfinite(inf);
FLoat.isNaN(nan);
Double.isInfinite(inf);
Double.isNaN(nan);

비트 연산자

👀 비트연산은 2진수 형태의 숫자 0과 1로 할 수 있는 연산이다.
비트연산자를 사용하여 시간복잡도를 줄일 수 있는 효과를 볼 수 있고 다양한 알고리즘에서 활용할 수 있다.

java 비트 연산자는 비트 논리 연산자와 비트 쉬프트 연산자로 구분된다.

비트 논리 연산자

연산자의미
& (AND)피연산자 중 양쪽이 모두 1일 때만 1이 되며, 그 외에는 0이 된다
l (OR)피연산자 중 한쪽이 1이면 1이도 되며, 그 외에는 0이 된다
^ (XOR)피연산자의 값이 서로 다른 경우에만 1이 되며, 그 외에는 0이 된다
~ (NOT)모든 비트를 반대로 뒤집는다

Code :

int x = 10; // 1010
int y = 12; // 1100

System.out.println("x.toBianry = " + Integer.toBinaryString(x));
System.out.println("y.toBianry = " + Integer.toBinaryString(y));
System.out.println("x & y = " + Integer.toBinaryString(x&y));
System.out.println("x | y = " + Integer.toBinaryString(x|y));
System.out.println("x ^ y = " + Integer.toBinaryString(x^y));
System.out.println("~x = " + Integer.toBinaryString(~x));

Output :

x.toBianry = 1010
y.toBianry = 1100
x & y = 1000
x | y = 1110
x ^ y = 110
~x = 11111111111111111111111111110101

x ^ y 연산 같은 경우 실제 bit는 00000000000000000000000000110 이 된다.
~x 1의 보수의 형태로 모든 bit가 반대로 뒤집히는걸 볼 수 있다.

🧐 왜 반대로 뒤집혔는데 숫자가 저렇게 길죠?!
int = 4byte, 1byte당 8bit, 총 32bit를 표현한다.

비트 쉬프트 연산자

쉬프트 연산자는 피연산자의 각 비트들을 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.

연산자자의미
>>bit값을 오른쪽으로 이동, 빈 자리는 부호값으로 대입한다
<<bit값을 왼쪽으로 이동, 빈 자리는 0으로 대입한다
>>>bit값을 오른쪽으로 이동, 빈자리는 0으로 대입한다

관계 연산자


논리 연산자


instanceof


assignment(=) operator


화살표(->) 연산자


3항 연산자


연산자 우선 순위


(optional) Java 13. switch 연산자


🙇‍♂️ Ref.

부동 소수점 산술 연산 주의사항

profile
감성코더

0개의 댓글