JAVA

[JAVA] 산술연산자 & 비트연산자

EJUN 2023. 3. 22. 15:38

산술 연산자
사칙연산을 다루는 연산자로, 가장 기본적이면서도 가장 많이 사용되는 연산자 중 하나이다.
산술 연산자 설명
+ 왼쪽의 피연산자에 오른쪽의 피연산자를 더함
- 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌
* 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함
/ 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔
% 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환 
+ 연산자

+연산자 사용 예시

+연산자는 위의 코드와 같이 정수형을 더하는 데 사용하는데도 쓰일 수 있고, 문자열을 합치는데도 사용이 가능하다.

- 연산자

-연산자 사용 예시

-연산자는 정수형에서는 사용할 수 있지만 +연산자와는 다르게 문자열을 뺄 수는 없다.

만약 문자열을 빼고 싶다면 

문자열에 뺄셈연산을 하고 싶은 경우

위의 코드처럼 substring()을 사용하면 된다.

* 연산자

*연산자 사용 예시

*연산자는 단순하게 x와y값을 곱하고 싶을 때 사용하는 연산자이고, 문자열에는 적용할 수 없다.

/ 연산자

/연산자 사용 예시

/연산자는 y에서x를 나눈 몫을 구하는 연산자이다.

%연산자

%연산자 사용 예시

%연산자는 y에서x를 나눈 후 나머지를 반환해주는 연산자이다.

비트 연산자
논리연산자와 비슷한 형태이지만, 비트(bit)단위로 논리 연산을 할 때 사용하는 연산자이다.
비트 연산자 설명
& 대응되는 비트가 모두 1이면 1을 반환함(AND연산)
| 대응되는 비트 중에서 하나라도 1이면 1을 반환함(OR연산)
^ 대응되는 비트가 서로 다르면 1을 반환함(XOR연산)
~ 비트를 1이면 0으로, 0이면 1으로 반전(NOT연산)
<< 명시된 수만큼 비트들을 전부 왼쪽으로 이동(Left Shift연산)
>> 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동(Right Shift연산)
>>> 지정한 수만큼 비트를 전부 오른쪽으로 이동, 새로운 비트는 전부0

 

& 연산자
0 0 0 0 1 1 1 1

 &                    &                     &                     &                    &                     &                     &                    & 

1 0 0 0 1 1 0 1

 

0 0 0 0 1 1 0 1

위와 같이 대응되는 비트가 모두 1인 경우에만 1을 반환한다.

 

| 연산자
0 0 0 0 1 1 1 1

  ^                      ^                       ^                      ^                       ^                      ^                       ^                      ^  

1 0 0 0 1 1 0 1

1 0 0 0 0 0 1 0

위와 같이 대응되는 비트 중 1이 하나라도 있다면 1을 반환한다.

 

^ 연산자
0 0 0 0 1 1 1 1

  |                       |                       |                        |                       |                       |                        |                       |  

1 0 0 0 1 1 0 1

1 0 0 0 1 1 1 1

위와 같이 대응되는 비트가 서로 다른 경우에는 1을 반환한다.

 

~ 연산자
0 0 0 0 1 1 1 1

  ~                      ~                      ~                      ~                      ~                      ~                      ~                       ~  

1 1 1 1 0 0 0 0

위와 같이 ~연산자를 사용하면 1인 비트를 0으로, 0인 비트를 1로 변환한다.

 

>>, <<, >>> 연산자

<<, >>, >>>사용 예시
코드실행결과

위의 코드를 실행한 결과가 위의 사진과 같이 나왔는데

<<연산자는 숫자 5를 이진수로 변환 후 각 비트를 3만큼 왼쪽으로 이동시키기 연산자이기 때문에 40이라는 결과가 출력되고, <<연산자연산을 하고 빈자리는 0으로 채워진다.
>>연산자는 반대로 숫자 5를 이진수로 변환 후 각 비트를 3만큼 오른쪽으로 이동하기 때문에 0이라는 결과가 출력되고, >>연산자연산을 하고 빈자리는 최상위 부호비트로 채워지게 된다.
>>>연산자는 숫자5의 각 비트를 3만큼 오른쪽으로 이동하고, 빈자리는 0으로 채운다.
그럼 >> 연산자와의 차이는 바로 빈자리를 >>>연산자는 최상위부호비트와는 상관없이 0으로 채운다.