Just do IT
article thumbnail

비트 연산자 (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 (삼항 연산자)

'Programing > JAVA' 카테고리의 다른 글

Java Control (조건문)  (0) 2021.07.19
Java Operator (삼항 연산자)  (0) 2021.07.19
Java Operator (논리 연산자)  (0) 2021.07.19
Java Operator (비교 연산자)  (0) 2021.07.19
Java Operator (증감 연산자)  (0) 2021.07.19
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!