연재니의 세상 나들이

IT/JAVA

9. 연산자 (Operator)

연재니 2017. 6. 9. 05:34
728x90
반응형





* 주석처리를 여러줄 하고 싶을 때


여러 줄을 드래그 한다음 ctrl 누른 상태에서 / 누르기












연산자(Operator)


연산 : 주어진 식을 계산하여 결과를 얻어내는 과정

피연산자 : 연산자의 작업대상


a + 5 : 식(expression)

a == n (a, n = 피연산자 operand)

(== 연산자 operator)












연산자의 종류



 종류

연산자 

단항연산자 

++, --(증감연산자) +, -, ~(not) !(논리부정/참,거짓) 타입 

 산술연산자

+, /, % (나머지연산자) 

+, - 

>>, <<, >>> 

비교연산자 

<, >, <=, >=, (=는 오른쪽에만 붙음), instanceof (자바에만있음) 

 ==, !=

 논리연산자

& AND 

 

^ XOR 

 

 | OR  

 

 || 


 &&

삼항연산자 

 ? : 

대입연산자 

 =, *=, /=, %=, +=, -=, >>=, <<=, >>>=, &=, ^=, |= 





~ : 2진수 0010 앞에 ~를 붙여서 '~0010'을 하게 되면 → 1101로 바뀐다


! : boolean a = true라고 하고 a 앞에 !를 붙여서 !a라고 하면 false라고 나온다


<< : 비트가 0010일 떄, << 라고 해주면 이동해서 0100 이라고 된다


& : 2&3일 때, 0010과 0011을 비교해서 같으면 같은 값, 다르면 0으로 출력 → 0010 따라서 2


| : 2 | 3일 떄, 0010과 0011비교 둘중에 하나가 1이면 1로 출력 → 0011 따라서 3


^ : 2^3일 때, 0010과 0011 같으면 0, 다르면 1 → 0001 따라서 1


&& : a && b, a이고 b일 경우, a가 t이고 b가 f일 경우 f


? :  aa =(조건)? a:b;  → 조건이 참이면 a값, 거짓이면 b값을 aa에 대입













1. 산술연산자




a에 100을 넣었을 때 a%5는 100을 5로 나눈 값의 나머지의 값인데


나머지가 없으므로 0이 나온다


a%7은 7로 나눴을 떄 몫이 14이고 나머지가 2이므로 결과값이 2다














쉬프트 연산자 >>, <<, >>>(자바에만 있는 연산자)



3 = 0000 0011

-3 = 1111 0011 

(맨 뒤 1을 남겨두고 나머지만 0, 1에서 바꿔준다

1 나오기 전의 0은 그대로)


-3 = -1*2^7 +2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1

-128 + 64 + 32 + 16 + 8 + 4 + 1








1) >> 오른쪽으로 비트수만큼 이동

앞에 비어있는 빈칸은 부호 비트로 채운다


2) << 왼쪽으로 비트수만큼 이동

뒤에 비어있는 빈칸은 0으로 채움


3) >>>(자바에만 있는 연산자) 오른쪽으로 비트수만큼 이동

앞에 비어있는 빈칸 0으로 채움








-6 구하기 전에 6부터 구하기


6 = 00000110

-6 = 11111010 


-6 >> 2

2칸 오른쪽으로 이동이므로 오른쪽의 10은 사라짐


앞에 사라진 두칸은 부호비트로 채움 (-6의 부호비트는 1이므로 1)

11111110


얼마인지 알기 위해 부호를 바꿔봄

0000010 = 2


부호 다시 붙여서 -2










-6 = 1111 1111 1111 1111 1111 1111 1111 1010 (32 bit로 계산)


0011 1111 1111 1111 1111 1111 1111 1110 (두칸 이동)


맨 앞 두칸 0으로 채워서 양수로 바뀜

















-6 = 11111010


왼쪽으로 두칸 이동


11101000


뒤집기 00011000 = 24


뒤집었으니 - 붙여줌


따라서 -24












2. 비트연산자





​문자열 "b AND c =" 다음에 b&c 값이 오고 싶을 때 (b&c) 이렇게 괄호를 해줘야 한다


위에 표를 보면 위에서 부터 순서대로 계산을 하는데 그렇게 되면 + 이 & 보다 먼저 계산 되어서 에러가 뜬다















AND OR XOR에 전부 괄호를 넣고 계산을 해준다





 



3은 0011   

5는 0101   


3&5 0001 = 1

3|5 0111 = 7

3^5 0110 = 6
















&&와 ||는 양 옆에 조건을 넣고 비교하는 것


AND에서 조건 두개가 참이므로 결과는 참
















AND에서 둘다 거짓이므로 거짓





















OR 에서 조건 둘다 거짓이므로 거짓이다

















둘다 참이므로 참





















3. 비교연산자








조건문에 있는 m과 n을 비교해서 맞는 것의 결과를 출력한다























4. 삼항연산자




변수 = (조건) ? 값1 : 값2; 


위의 형태로 쓰이는데 괄호 안 값이 참이면 값1을 변수에 집어 넣고


괄호 안이 거짓이면 값2를 변수에 집어 넣는다





아래 괄호 조건에서 bb가 더 크므로 거짓이다 따라서 거짓이면 :(콜론) 우측 값인 bb의 값 200을 출력한다






















변수가 문자열일 때 값에 문자열인 큰 따옴표를 사용한다


조건이 거짓이므로 우측 문자열을 출력한다














5. 대입연산자







+= 는 ii 값에 우측 값을 더한 결과가 대입된다





















5는 0000 0101


<<2 왼쪽으로 두칸 이동하고 빈칸 0으로 채움


0001 0100 16 + 4 =20

















3은 0011

2는 0010


같은 건 0, 다른 경우 1 출력


3^2 0001 = 1




















6. 단항연산자




























k는 1씩 커지고


kk는 1씩 작아지는 것























cc가 10인데 바로 밑에 줄에 ++cc라고 했으니 값이 증가한다


값이 증가한 cc를 dd값에 넣으므로 둘다 값이 11로 같다






728x90
반응형

'IT > JAVA' 카테고리의 다른 글

11. 반복문 (for, while)  (0) 2017.06.13
10. 조건문 (if문, switch문)  (0) 2017.06.13
8. 형변환 (Casting)  (0) 2017.06.08
7. 자료형의 이해  (0) 2017.06.08
6. 변수의 이해(Variable)  (0) 2017.06.07