

논리 연산에서 모든 항이 실행되지 않는 경우이다.
&&, || 사용 시 앞의 항의 결과만으로 true / false가 정해질 때, 뒤 항을 평가/연산하지 않는다! 따라서 앞에서 많은 경우의 수를 판단할 수 있는 조건이 오면 좋다.
int num1 = 10;
int i = 2;
boolean value = ((num1 += 10) < 10) && ((i = i+2) < 10);
//앞의 항 결과 false로 뒤의 항 볼 필요 없음
System.out.println(value); //false
System.out.println(num1); //20
System.out.println(i); //2(i+2 연산 시행되지 않음)
int num1 = 10;
int i = 2;
boolean value = ((num1 += 10) < 10) || ((i = i+2) < 10);
//뒤의 항까지 평가해야함
System.out.println(value); //false
System.out.println(num1); //20
System.out.println(i); //4
조건식? 결과1 : 결과2
int max = 0;
int num1 = 10;
int num2 = 20;
max = (num1 > num2)? num1 : num2;

int num1 = 5; //00000101
int num2 = 10; //00001010
System.out.println(~num1); //11111010(-6)
System.out.println(num1 & num2); //00000000(0)
System.out.println(num1 | num2); //00001111(15)
System.out.println(num1 ^ num2); //00001111(15)
System.out.println(num1 << 2); //00010100(20)
System.out.println(num1); //00000101(5)
System.out.println(num1 <<= 2); //00010100(20)
System.out.println(num1); //00010100(20)
//바뀐 값을 저장하기 위해서는 대입연산자를 사용해야 함.
- 부호비트 : 첫번째 비트를 말함, 0이면 양수, 1이면 음수
- 양수 읽는 법 : 1을 기준으로 값을 읽음.
ex) 000...001010 = (+) 1x2³ + 1x2¹ = 10- 음수 읽는 법 : 0을 기준으로 값을 읽고 +1을 한다.
ex) 111...111010 = (-) 1x2² + 1x2의0제곱 +1 = -6
