JAVA
java_데이터타입(2항연산자)_22.05.19(day2)
양빵빵
2022. 5. 19. 15:34
package day02;
public class LogicalOperator {
public static void main(String[] args) {
boolean t = true, f=false;
System.out.println(t | t);
System.out.println(t | f);
System.out.println(f | t);
System.out.println(f | f);
System.out.println("=====================");
int x = 10, y = 20;
boolean result1 = (x != 10) && (++y == 21);
boolean result2 = (x == 10) || (++y == 21); // | 일 때 y=22, || 일때 y = 20;
// 단축평가 좌항에서 결과가 판단되면 우항 연산을 수행하지 않음.
// x = 10 이 true 이므로 ++y = 21 연산을 수행 하지 않고 true 결과 출력 하여 ++y가 실행되지 않음.
// 단축평가
/*
true && true => true : 우항이 true 이면 좌항 true인지 확인 후 결과값 출력
true && false => false
false && true => false : 우항이 false이면 좌항 결과에 상관 없이 false 이므로 우항에서 연산 종료 후 결과 값 출력.
false && false => false
*/
System.out.println("result1 = " + result1);
System.out.println("result2 = " + result2);
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("======================");
//논리 반전(!) - 단항 연산자
System.out.println(!t);
System.out.println(10 + 20); // +는 산술 연산자
System.out.println("안녕"+"하세요"); // +는 결합 연산자
//논리 & 논리 -> 논리 연산자
// 정수 & 정수 -> 비트 연산자 // 피연산자에 따라 연산자의 열할이 달라진다.
}
}
단항 연산자에서 살펴 보지 않았던 비트 반전 연산자
package day02;
public class BitOperator {
public static void main(String[] args) {
//비트연산자
byte a = 5; // 0000 0101
byte b = 3; // 0000 0011
// & (비트곱) : 각 비트 자리수를 곱하세요.
System.out.println(a & b); // & 의 피연산자가 정수 이므로 비트연산자
// -> 0000 0001 = 1
// |(비트합) : 각 비트 자리수를 더하세요. 단 1+1 = 1로 처리
System.out.println(a | b);
// -> 0000 0111 = 7
// -> 0000 0110
// ^(배타적 논리합) : 각 비트 자리수를 비교해서 다르면 1 같으면 0 (배타적이면 1, 아니면 0)
System.out.println(a ^ b);
//비트 이동 연산
// << : 왼쪽으로 이동 -> 2의 이동숫자만큼 제곱으로 곱해라
// >> : 오른쪽으로 이동 -> 2의 이동숫자만큼 제곱으로 나눠라
// 00000000 00000000 00000000 11000000
int x = 192 ;
// 00000000 00000000 00000110 00000000 (왼쪽으로 3칸 이동)
System.out.println(x << 3); // 192 * (2**3) => 192 * 8 = 1536
// 00000000 00000000 00000000 00110000
System.out.println(x >> 2); // 192 / (2**2) => 192 / 4 = 48
// 비트 반전 연산자 (~) 단항 연산자
int y = 8; // 0000 1000
System.out.println(~y); // 1111 0111 // 음수를 변환하려면 2의 보수 표기 법 사용
// 1의보수 -> 1(부호)0001000
// 2의 보수 -> 1(부호)0001001 (+1)
}
}