& 연산은 두 개의 비트가 모두 1일 때 1을 반환하는 AND 연산을 합니다. 따라서 & 연산자의 비트단위 연산의 결과는 다음과 같습니다.
public class Main {
public static void main(String[] args) {
int num1 = 15;
int num2 = 20;
int num3 = num1 & num2;
System.out.println("15 : " + Integer.toBinaryString(num1));
System.out.println("20 : " + Integer.toBinaryString(num2));
System.out.println("&연산 결과 : " + num3);
// 15 : 1111
// 20 : 10100
// &연산 결과 : 4
}
}
| 연산은 두 개의 비트 중 하나라도 1이면 1을 반환하는 OR 연산입니다. 따라서 | 연산자의 비트단위 연산의 결과는 다음과 같습니다.
public class Main {
public static void main(String[] args) {
int num1 = 15;
int num2 = 20;
int num3 = num1 | num2;
System.out.println("15 : " + Integer.toBinaryString(num1));
System.out.println("20 : " + Integer.toBinaryString(num2));
System.out.println("|연산 결과 : " + num3);
// 15 : 1111
// 20 : 10100
// ㅣ연산 결과 : 31
}
}
^ 연산은 두 개의 비트가 서로 다른 경우에 1을 반환하는 XOR 연산입니다. 따라서 다음의 연산결과를 보입니다.
public class Main {
public static void main(String[] args) {
int num1 = 15;
int num2 = 20;
int num3 = num1 ^ num2;
System.out.println("15 : " + Integer.toBinaryString(num1));
System.out.println("20 : " + Integer.toBinaryString(num2));
System.out.println("^연산 결과 : " + num3);
// 15 : 1111
// 20 : 10100
// ^연산 결과 : 27
}
}
~ 연산은 비트를 0에서 1로, 1에서 0으로 반전시키는 NOT 연산입니다. 보수연산이라고도 불리며, 연산의 결과는 다음과 같습니다.
public class Main {
public static void main(String[] args) {
int num1 = 15;
int num2 = ~num1;
System.out.println("15 : " + Integer.toBinaryString(num1));
System.out.println("20 : " + Integer.toBinaryString(num2));
System.out.println("~연산 결과 : " + num2);
// 15 : 1111
// 20 : 11111111111111111111111111110000
// ~연산 결과 : -16
}
}
<< 연산자는 비트를 왼쪽으로 이동하는 shift 연산입니다.
num1 << num2 로 표현되며 num1의 비트 열을 num2칸씩 왼쪽으로 이동시킨다는 의미를 갖고 있습니다.
public class Main {
public static void main(String[] args) {
int num1 = 15;
int result1 = num1 << 1;
int result2 = num1 << 2;
int result3 = num1 << 3;
System.out.println("1칸 이동 결과 : " + result1);
System.out.println("1칸 이동 결과 : " + result2);
System.out.println("1칸 이동 결과 : " + result3);
// 1칸 이동 결과 : 30
// 1칸 이동 결과 : 60
// 1칸 이동 결과 : 120
}
}
>> 연산자는 비트를 오른쪽으로 이동하는 shift 연산입니다.
num1 >> num2 로 표현되며 num1의 비트 열을 num2칸씩 오른쪽으로 이동시킨다는 의미를 갖고 있습니다.
public class Main {
public static void main(String[] args) {
int num1 = -16;
int result1 = num1 >> 2;
System.out.println("2칸 이동 결과 : " + result1);
// 2칸 이동 결과 : -4
}
}