비트 연산

YOBY·2024년 1월 29일
0

연산자 종류


  1. & 연산자

& 연산은 두 개의 비트가 모두 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이면 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. ^ 연산자

^ 연산은 두 개의 비트가 서로 다른 경우에 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
	}
}

  1. ~ 연산자

~ 연산은 비트를 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
	}
}

  1. << 연산자

<< 연산자는 비트를 왼쪽으로 이동하는 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
	}
}

  1. >> 연산자

>> 연산자는 비트를 오른쪽으로 이동하는 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
	}
}

0개의 댓글