
연산 : 명령문을 실행해서 대상에 대한 처리를 하는 것을 연산이라고 함.
연산자(오퍼레이터 = Operator) : 피연산자를 연산처리하기 위한 기호
피연산자(항 = 오퍼런드 = Operand) : 연산의 대상이 되는 것을 말함.
비트:
&(논리곱 AND -> 모두 참인 경우만 참, 나머지는 거짓
|(논리합 OR -> 모두 거짓인 경우만 거직, 나머지는 참)
^(배타적논리합 XOR -> 항이 서로 다른 경우만 참, 나머지는 거짓) => 값을 1,0으로 반환
&(논리곱)연산자
| 좌항 | 우항 | 결과 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
|(논리합)연산자
| 좌항 | 우항 | 결과 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
^(배타적논리합)연산자
| 좌항 | 우항 | 결과 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
---------> 조건식에서 사용
&&
| 좌항 | 우항 | 결과 |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
||
| 좌항 | 우항 | 결과 |
|---|---|---|
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
삼항연산자 (항이 세개인 연산자):
=> 조건식 ? 참일때의 실행문이나 값: 거짓일때의 실행문이나 값
대입, 혼합대입 연산자 : = *= /= %= += -=
후위연산자: ++ -- (ex) a++)
코드

public class Ex04 {
public static void main(String[] args) {
int a = 10, b=10;
int c = a; //c = 10
System.out.println("a : " + a + ", c : " + c);
c = ++a + b; // a = 11, c = 21
System.out.println("a : " + a + ", c : " + c);
c = a++ + b; // c = 21, a = 12
System.out.println("a : " + a + ", c : " + c);
}
}
전위연산자와 후위연산자에는 반드시 대입연산자가 들어간다고 생각해야함
결과

10을 2진수로 변환

10진수를 8진수, 16진수로 변환할 때 2진수로 변환하는 것이 더 쉬움
30을 2진수로 변환
| 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 |
30을 8진수로 변환
| 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 0 |
| 4 | 2 | 1 | 4 | 2 | 1 |
|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 0 |
따라서 36(8진수)
30을 16진수로 변환
| 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 1 | 0 |
| 8 | 4 | 2 | 1 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
따라서 1E(16진수)
public class Ex09 {
public static void main(String[] args) {
// 비트연산 AND
System.out.println("비트연산 AND : 곱");
System.out.println(0 & 0);
System.out.println(0 & 1);
System.out.println(1 & 0);
System.out.println(1 & 1);
System.out.println(12 & 5); // 2진수로 계산하고 10진수로 반환
/*
8 4 2 1
1 1 0 0
8 4 2 1
0 1 0 1
0 1 0 0 -----> 4가 결과로 나옴
*/
System.out.println("===============\n");
// 비트연산 OR
System.out.println("비트연산 OR : 합");
System.out.println(0 | 0); // 0
System.out.println(0 | 1); // 1
System.out.println(1 | 0); // 1
System.out.println(1 | 1); // 1
System.out.println(12 | 5); // 13
System.out.println("=============\n");
/*
* 8 4 2 1
* 1 1 0 0
*
* 8 4 2 1
* 0 1 0 1
*
* 1 1 0 1 ----->13
* */
// 비트연산 XOR(배타적연산)
System.out.println("비트연산 XOR : 배타적 합"); // 서로 다른 값이면 1
System.out.println(0 ^ 0); // 0
System.out.println(0 ^ 1); // 1
System.out.println(1 ^ 0); // 1
System.out.println(1 ^ 1); // 0
System.out.println(12 ^ 5); // 9
System.out.println("================\n");
/*
* 8 4 2 1
* 1 1 0 0
* 0 1 0 1
* 1 0 0 1 ----------> 9
*
* */
}
}
package first;
public class Ex10 {
public static void main(String[] args) {
// 논리곱이나 논리합은 연산의 순서가 중요함.
// 논리곱 연산 : 모두 참(true)인 경우만 true
System.out.println( true && true);
System.out.println( true && false);
System.out.println( false && true); // 앞에것만 계산하고 false 반환
System.out.println( false && false); // 앞에것만 계산하고 false 반환
System.out.println("==================\n");
// 논리합 연산 : 하나만 참(true)인 경우만 true
// 모두 거짓(false)인 경우만 거짓(false)!
System.out.println( true || true); // 앞에것만 계산하고 true 반환
System.out.println( true || false); // 앞에것만 계산하고 true 반환
System.out.println( false || true);
System.out.println( false || false);
System.out.println("==================\n");
// 예외상황
int value1 = 3;
System.out.println("논리연산 논리곱 &&");
System.out.println(false && ++value1 > 6);
System.out.println(++value1 > 6 && false);
// 비교연산자 예외상황 앞에 항 밖에 없으면 논리곱 연산이 먼저 계산됨
// 논리곱 연산이기에 false가 나오면 뒤에 것을 계산하지 않음
System.out.println(value1);
System.out.println(true && ++value1 > 6);
System.out.println(value1);
System.out.println("===============\n");
// 예외상황
System.out.println("논리연산 논리합 ||");
int value2 = 5;
System.out.println(true || value2++ > 6); // true
System.out.println(value2); // 5
System.out.println(false || value2++ > 6); // false
System.out.println(value2); // 6
System.out.println("==================\n");
}
}
ctrl + n + t 를 누르면 새로운 클래스를 쉽게 생성할 수 있음
tab 키를 누르면서 이동, v 표시를 하면 체크박스를 선택할 수 있음