public class Opr09 {//비트 단위 논리 연산자
public static void main(String[] args){
int a=12; // 8+4 =2³ + 2²
// 128 64 32 16 8 4 2 1
// 0 0 0 0 1 1 0 0
//12
int b=20; // 16+4=2⁴ + 2²
// 128 64 32 16 8 4 2 1
// 0 0 0 1 0 1 0 0
// 20
int c;
c = a & b; // 비트 단위 값이 둘다 1일때만 1
// 128 64 32 16 8 4 2 1
// 0 0 0 0 1 1 0 0
// 0 0 0 1 0 1 0 0
// 0 0 0 0 0 1 0 0
// 값 4
System.out.println(a + " & "+ b + " -> " + c);
c = a | b; //비트 단위 값이 둘다 0일때만0
// 128 64 32 16 8 4 2 1
// 0 0 0 0 1 1 0 0
// 0 0 0 1 0 1 0 0
// 0 0 0 1 1 1 0 0
// 28
System.out.println(a + " | "+ b + " -> " + c);
c = a ^ b; //비트 단위 값이 두 값이 다르면1 같으면0
// 128 64 32 16 8 4 2 1
// 0 0 0 0 1 1 0 0
// 0 0 0 1 0 1 0 0
// 0 0 0 1 1 0 0 0
// 24
System.out.println(a + " ^ "+ b + " -> " + c);
c= ~a; //비트 단위 값이 1이면0으로 0이면 1로
// 128 64 32 16 8 4 2 1
// 0 0 0 0 1 1 0 0
// 1 1 1 1 0 0 1 1
// 24
// 이해 못함
System.out.println("~ "+ a + " -> " + c);
}
}