새소식

Java

[Java] 비트 연산자

  • -

& : 비트단위로 AND 연산을 한다.

예) num1 & num2

0 0 1 1 0

0 1 1 0 1

-------------

0 0 1 0 0

 

| :  비트단위로 OR 연산을 한다.

예) num1 | num2

0 0 1 1 0

0 1 1 0 1

-------------

0 1 1 1 1

 

^ : 비트단위로 XOR 연산을 한다. (같으면 0, 다르면 1)

예) num1 ^ num2

0 0 1 1 0

0 1 1 0 1

-------------

0 1 0 1 1

 

<< : 피연산자의 비트 열을 왼쪽으로 이동시킨다. 빈 공간은 0으로 채운다.

예) 10<<2

0 0 0 0 1 0 1 0

--------------------

0 0 1 0 1 0 0 0

 

>> : 피연산자의 비트 열을 오른쪽으로 이동시킨다. 빈 공간은 0으로 채운다.

예) num>>2

0 0 1 1 0

-------------

0 0 0 0 1

 

비트 1자리가 flag 1개 역할

true: 선택, 방문

false: 비선택, 미방문

 

& (비트곱) : 조건판단 flag 켜져있는지 확인

value1 & value2

- value1과 value2를 & 연산

- 각 비트열을 비교하여 두 비트 모두 1이면 1, 아니면 0으로 처리

10&3

   0 0 0 0 1 0 1 0

& 0 0 0 0 0 0 1 1

-----------------------

   0 0 0 0 0 0 1 0  

 

10&1<<3 : 1이 켜져있는지 확인하는 과정

   0 0 0 0 1 0 1 0

& 0 0 0 0 1 0 0 0

------------------------

   0 0 0 0 1 0 0 0  

 

| (비트합) : 기존비트열상태 + 새로운 상태 => 새로운 비트 flag "set" 추가

value1 | value2

- value과 value2를 | 연산

- 각 비트열을 비교하여 두 비트 모두 0이면 0, 아니면 1로 처리

10|3

  0 0 0 0 1 0 1 0

| 0 0 0 0 0 0 1 1

-----------------------

  0 0 0 0 1 0 1 1

10|1<<2

비트모음 flag

색칠한 자리를 1로 만들고싶다

  0 0 0 0 1 0 1 0

| 0 0 0 0 0 1 0 0

-----------------------

  0 0 0 0 1 1 1 0

'Java' 카테고리의 다른 글

[Java] 세그멘트 트리  (0) 2023.12.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.