본 내용은 윤성우의 열혈 프로그래밍 관련 책에서 학습한 내용을 정리한 것입니다.

* 연산자 순위

* / % 모두 같은 순위다. => 진행 방향이다. 

그외는 모두 찾아보면 된다. 

 

* 나눗셈과 나머지

나눗셈과 나머지는 큰 수에 한 자리씩 catch 할때도 유용하고 여러모로 쓰이는 곳이 많다. 

% 나머지 / 몫

 

* 복합 대입 연산자

쉽게 한문장으로 쓸 수 있다. 예를 들면, a = a+b 를 a+=b 로 쓸 수 있다. 

 

* 관계 연산자

<=, >= 익히면 될듯 하다. 

 

* 논리 연산자

&& , ||, ! 

 

* Short - Circuit Evaluation 

&&, || 연산자를 쓰면 발생하는 문제로 

(num2 -= 10) && (num2+=29) >0

앞에서 이미 false 이면 뒤에는 나가게 된다.  또,

(num1+=20)>0 || (num1 += 25) >0

앞에서 이미 true이면 뒤에는 나가게 된다. 

따라서 이부분을 주의할 필요가 있다. 

 

* 부호 연산자

부호를 붙임으로써 수학적인 의미와 동일하다.

 

* Postfix ++, Postfix -- 

피연산자에 저장된 값을 1증가, 감소 를 체크한다. 

 

* 비트를 대상으로 하는 연산자들

& = and 

| = or

^ = xor

~ = not 

xor은 두 비트가 다를때만 1을 반환한다. 

 

* 비트 쉬프트(Shift) 연산자 : <<, >>, >>> 

특히 주의해서 봐야 할것은, System.out.print((byte)(num<<1) + " "); 시 값이 두배로 늘어나게 된다. 

알고리즘에서도 많이 사용되니 익혀두면 좋을 것 같다. 

 

1. 보수구하기 (~ 이용)

~ 를 취하고, +1 한다. 2의보수 개념을 그대로 채용한다.

 

2. int형 정수 15678 오른쪽으로부터 3, 5 비트를 확인

모르겠다. 해설을 여러번 봐도 15678을 byte로 나타내면 2의 10승을 넘는데 

>> 2 만 해서 5번째 자릿수를 확인할 수 있는건가. 

결과적으로 정답은 num>>2 & 1 가 된다고 카더라. 여러번 보면 익숙해질려나..