& : 비트단위로 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