Bitmask (1), "Bit operator"
OR operator ( A | B )
두 비트중 하나라도 1 이면 1 이다.
- ex) 0 0 1 1 ⑵ | 0 1 0 1 ⑵ = 0 1 1 1 ⑵
AND operator ( A & B )
두 비트 다 1 이어야 1 이다.
- 0 0 1 1 ⑵ & 0 1 0 1 ⑵ = 0 0 0 1 ⑵
XOR operator ( A ^ B )
두 비트가 같으면 1, 다르면 0 이다.
- 0 0 1 1 ⑵ | 0 1 0 1 ⑵ = 1 0 0 1 ⑵
NOR operator ( ~ A )
모든 비트가 반전된다.
- ~ 0 0 1 1 ⑵ = 1 1 0 0 ⑵
SHIFT operator ( A << i , A >> i )
A 를 i 비트만큼 이동시킨다.
- int i = 3;
- 1 0 1 1 ⑵ << i = 1 0 1 1 0 0 0 ⑵ = 0 1 0 1 1 0 0 0 ⑵ // i 만큼 좌측으로 밀고, 그래서 생긴 빈 곳에우측에 0이 채워진다.
- 1 0 1 1 ⑵ >> i = 1 ⑵ = 0 0 0 1 ⑵ // i 만큼 우측으로 밀고, 밀려난 비트들은 사라진다.
shift operation 에서 '>>'은 arithmetic right shift operator 이다. '>>>' 로 표기하는 logical right shift operator 가 있는데 쉽게 말하면 '>>' 는 맨 좌측에 있는 sign bit (부호 비트) 를 유지하고, '>>>는' 유지하지 않는다. 아래 글에 sign bit 에 대한 글을 참고해보면 좋을 것 같다.
// link 준비중
728x90
'C, C++ > Data structure' 카테고리의 다른 글
이진 트리 (Binary Tree) (0) | 2023.01.14 |
---|---|
세그먼트 트리 (Segment tree) (0) | 2021.08.03 |
힙[Heap], 삽입 및 삭제 (1) | 2021.07.22 |
힙 [Heap], 최대힙/최소힙 (0) | 2021.07.21 |
Bitmask (2), "자주 사용되는 형태" (0) | 2021.02.25 |
댓글