chapter4. 연산자(Operator) (2)
<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.