Java

[JAVA] 비트연산 정리

cornarong 2021. 8. 17. 18:51

* 이진 비트 연산을 수행해서 결과를 정수로 반환하는 연산자 (정수형만 사용 가능)

 

1. AND 연산 (&)

- 둘다 '1'일 경우 '1'로 변환

A 1 0 1 0
B 1 0 1 1
Result 1 0 1 0
        int A = 10;
        int B = 11;
        System.out.println("A : " + Integer.toBinaryString(A));
        System.out.println("B : " + Integer.toBinaryString(B));
        System.out.println("A & B : "+Integer.toBinaryString(A & B));


2. OR 연산 ( | )

- 하나만 '1'일 경우 '1'로 변환

A 1 0 1 0
B 1 0 1 1
Result 1 0 1 1
        int A = 10;
        int B = 11;
        System.out.println("A : " + Integer.toBinaryString(A));
        System.out.println("B : " + Integer.toBinaryString(B));
        System.out.println("A & B : "+Integer.toBinaryString(A | B));


3. XOR 연산 (^)

- 서로 다를 경우 '1'로 변환

A 1 0 1 0
B 1 0 1 1
Result 0 0 0 1
        int A = 10;
        int B = 11;
        System.out.println("A : " + Integer.toBinaryString(A));
        System.out.println("B : " + Integer.toBinaryString(B));
        System.out.println("A & B : "+Integer.toBinaryString(A ^ B));


4. NOT 연산 (~)

- 반대로 변환

A 1 0 0 1
Result 0 1 1 0

5. SHIFT 연산 (<< , >>)

1)  >> : 오른쪽으로  주어진 비트 수만큼 이동 
          : 앞에 비어 있는 빈칸은 부호 비트로 채운다

 

Ex ) >> 2

우측으로 2비트 수 만큼 이동

A = 15 0 0 0 0 1 1 1 1
result 0 0 0 0 0 0 1 1

 

2)  << : 왼쪽으로 주어진 비트 수만큼 이동 
          : 뒤에 비어 있는 빈칸은 0으로 채운다.

 

Ex) << 2

좌측으로 2비트 수 만큼 이동

A = 15 0 0 0 0 1 1 1 1
result 0 0 1 1 1 1 0 0