Programing/JAVA

Java Operator (비트 연산자)

AmyG 2021. 7. 19. 14:43

비트 연산자 (bitwise operator)

▶ 비트 연산자 (bitwise operator)?

※ bitwise : (컴퓨터) 비트에 관한, 비트의

- 비트 연산자는 논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자입니다.

   또한, 비트 단위로 왼쪽이나 오른쪽으로 전체 비트를 이동하거나, 1의 보수를 만들 때도 사용됩니다.

비트 연산자 설명
& 대응되는 비트가 모두 1이면 1을 반환합니다. (비트 AND 연산)
| 대응되는 비트 중에서 하나라도 1이면 1을 반환합니다. (비트 OR 연산)
^ 대응되는 비트가 서로 다르면 1을 반환합니다. (XOR 연산)
~ 비트를 1이면 0으로, 0이면 1로 반전시킵니다. (비트 NOT 연산, 1의 보수)
<< 명시된 수만큼 비트들을 전부 왼쪽으로 이동시킵니다.. (left shift 연산)
>> 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킵니다. (right shift 연산)
>>> 지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됩니다.

 

▶ 비트 AND, OR, XOR, NOT, 연산

- 비트 AND 연산 (&)

- 두 비트가 모두 1일 때만 1을 반환하며 다른 경우는 모두 0을 반환합니다.

0 0 0 0 1 1 1 1
& & & & & & & &
0 0 0 1 0 1 0 1
0 0 0 0 0 1 0 1

 

- 비트 OR 연산 ( | )

- 두 비트중 하나라도 1이면 1일 반환하며 두 비트가 모두 0일때만 0을 반환합니다.

0 0 0 0 1 1 1 1
| | | | | | | |
0 0 0 1 0 1 0 1
0 0 0 1 1 1 1 1

 

- 비트 XOR 연산 ( ^ )

- 대응되는 두 비트가 서로 다르면 1을 반환하고, 서로 같으면 0을 반환합니다.

0 0 0 0 1 1 1 1
^ ^ ^ ^ ^ ^ ^ ^
0 0 0 1 0 1 0 1
0 0 0 1 1 0 1 0

 

- 비트 NOT 연산 ( ~ )

- 해당 비트가 1이면 0을 반환하고, 0이면 1을 반환합니다.

0 0 0 0 1 1 1 1
~ ~ ~ ~ ~ ~ ~ ~
1 1 1 1 0 0 0 0

 

▶ 비트 연산에 대한 예시

public class Bitewise{
	public static void main(String[] args){
    	int num1 = 8;
        
        System.out.println("~ 연산자에 의한 결과 : " + ~num1);
        System.out.println("<< 연산자에 의한 결과 : " + (num1 << 2));
        System.out.println(">>> 연산자에 의한 결과 : " + (num1 >>> 2));
    }
}
-----------------------------------------------------------------------------
출력 결과
~ 연산자에 의한 결과 : -9
<< 연산자에 의한 결과 : 32
>>> 연산자에 의한 결과 : 2

- ~ 연산자에 의한 결과 : ~num1 

0 0 0 0 1 0 0 0
~ ~ ~ ~ ~ ~ ~ ~
1 1 1 1 0 1 1 1

-> 11110111 = -9

 

- << 연산자에 의한 결과 : (num1 << 2)

- 원래의 비트 오른쪽에 숫자만큼 0이 생기며 그만큼 비트를 전부 왼쪽(부등호 방향)으로 이동시킵니다.

    0 0 0 0 1 0 0
   
0 0 0 0 1 0 0 0 0

-> 00100000 = 32

 

- >>> 연산자에 의한 결과 : (num1 >>> 2)

- - 원래의 비트 왼쪽에 숫자만큼 0이 생기며 그만큼 비트를 전부 오른쪽(부등호 방향)으로 이동시킵니다.

0 0 0 0 1 0 0 0    
   
0 0 0 0 0 0 1 0 0

-> 00000010 = 2

 

Java Operator (삼항 연산자)