언어/JAVA

chapter4. 연산자(Operator) (2)

고구마광팬 2017. 4. 12. 03:21

<2> 단항연산자

1.  부호 연산자로써의 +와 -

 

예시 1 ( ** n3와 n4를 short 가 아닌 int로 받았다. )

1) 기능

- + : 특별히 하는 일이 없다 (양수임을 강조할 때 사용된다)

- - : 부호를 바꾸는 역할을 한다.

 

2) 특별히 하는 일이 없는 + 연산자

예시1에서 n3, n4를 short 가 아닌 int로 받고 있음을 볼수 있다.

- short로 받을 경우 : 컴파일에러. => 연산이 일어나면서 n2가 int로 바꼈기 때문이다.

 

 : 컴파일에러. => 연산이 일어나면서 n2가 int로 바꼈기 때문이다. 즉 +연산자는 딱히 하는일은 없지만 실제 연산의 과정을 거친다.

 

-강제형변환

 

 

 

2. 증가, 감소 연산자 (++, --) : prefix (++n, --n)

1) 기능

++ : 피연산자에 저장된 값을 1증가

-- : 피연산자에 저장된 값을 1감소

2) prefix : 접두사

=> 피연산자의 값에서 변화시킨 값을 의미하는것이 아니라 피연산자값 자체를 변화시킨다. 선증감 후연산

 

 

 

 

3. 증가, 감소연산자(++,--) : postfix (n++ , n--)

1) postfix : 접미사  

 

: num1 값의 변하긴 하지만 num2, num3에는 변하기 전의 값이 저장된다. 선연산 후증감

( 대입연산이 증감연산(Postfix)보다 우선순위가 높아서가 아니다.) 

=> 연산이 이루어지는 순간 num1의 값 변화, 하지만 문장에서는 변화되기 전의 값으로 인식하여 연산.

 

예시)

 

 

 

 

 

 

 

<3> 비트연산자

1) 비트연산

: 비트단위로 연산 진행, 비트단위로 진행된 연산의 결과를 묶어서 하나의 연산결과를 반환.

- 2진수의 형태로 변환시켜서 같은 자리에 있는 비트끼리 연산을 하고 그 연산의 결과를 합쳐서 정수로 반환한다.

- 정수만 가능하다 (실수x)

 

 

: (형변환 고려 x) 13 비트단위로 00001101 7 비트단위로 00000111

   00001101

& 00000111 = 00000101 = 5

 

 

2) 비트연산자

연산자 

연산자기능 

결합방향 

 &

 비트단위 and 연산  n1&n2;

: 둘다 1일때 1반환 

 ->

 |

 비트단위 or 연산 n1 | n2;

: 하나만 1이어도 1반환

 ->

 ^

 XOR연산 n1 ^ n2;

: 두 피연산자의 값이 다를때 1반환

 ->

 ~

 모든 비트를 반전시킨다 ~n1;

: 1 -> 0 , 0 -> 1

 <-

 

예시)

 

 

 

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

- 비트열을 오른쪽 또는 왼쪽으로 이동시키는 연산자

- 이항연산자

- 피연산자가 모두 정수여야 한다

연산자 

연산자의 기능 

결합방향 

 <<

-비트열을 왼쪽으로 이동

-이동에 따른 빈공간은 0으로 채움

-n<<2; 두칸 왼쪽으로 이동시킨 결과 반환

 ->

 >>

 -비트열을 오른쪽으로 이동

-이동에 따른 빈공간은 음수의 경우 1, 양수의 경우 0으로 채움

-n>>2; 두칸 오른쪽으로 이동시킨 결과 반환

-> 

 >>>

-피연산자의 비트열을 오른쪽으로 이동

-이동에 따른 빈 공간은 0으로 채움

-n>>>2; 두칸 오른쪽으로 이동시킨 결과 반환 

-> 

 

예시)

<< : 2^n 만큼씩 늘어난다

>> : (1/2)^n 만큼씩 늘어난다

>>>: 양수에 한정해서 (1/2)^n만큼 늘어난다.

 

* 비트쉬프트연산자는 CPU의 연산능력이 약한 소형 컴퓨터에서 많이 쓰인다.

 

 

 

퀴즈

Q1. 7의 2의 보수를 계산하여 출력하는 프로그램 만들기

 

 

Q2.