Goal
비트 연산자(bitwise operator)bit 단위로 수행되는 논리 연산자
산술 Shift
논리 Shift
Circular shift도 있는데 산술, 논리 Shift와는 다르게 양끝 bit를 재활용하는 형식이다. (산술, 논리 Shift는 밀려난 bit를 버린다.) Bit연산 관련 용어비트 필드(bit field) 인접한 비트들의 연속적인 공간 ex) - char : 8bit(1byte) 비트 필드를 갖는 자료형 - int, float : 32bit(4byte) 비트 필드를 갖는 자료형 비트 플래그(bit flag) 비트 필드에서 비트들의 상태값을 확인 하기 위한 특정 값 (깃발을 통해 어떤 상태를 확인하듯이, bit를 통해 어떤 상태를 확인 한다는 의미) 비트 플래그는 특정 상태값을 확인하거나, 비트를 조작하는데 사용 될 수 있다. 플래그(flag)라고도 한다. 굳이 구분하자면 어감상 다음과 같은 차이가 있을 수 있다.
비트 마스크(bit masking) 비트 연산에 사용되는 플래그 즉, 플래그인데 특정 연산에 사용될 때 마스크라고도 한다. 마스크를 사용한 비트 연산을 '비트 마스킹(bit masking)'이라고 한다. 활용 예 이미지 마스킹, IP 주소의 mask 값, 해시 테이블 비트 연산의 활용MSB, LSBMSB : Most Significant Bit (최상위 비트) LSB - Least Significant Bit (최하위 비트) 설명 최상위 또는 최하위 비트는 특정 검사를 하기 위한 용도로 사용 되는 경우가 많다. (flag 값으로 활용) 단순히 1bit만 검사하는 경우도 있지만, 연속된 몇 bits를 조사하는 경우도 있다. 다음은 그림은 송신 데이터를 MSB로 받는 경우와 LSB로 받는 경우를 나타낸다. Left Shift, Right Shift
비트연산자를 사용한 Masking (OR, AND, XOR, NOT)비트연산자는 다음과 같은 용도로 사용될 수 있다.
비트 연산자를 활용해서 구현한 연산
구현 코드
(bit조작을 쉽게 다루기 위해 std::bitset 타입을 따로 지원하기도 한다) 집합과 비트 연산자의 관계이외에도 비트 연산을 사용해서 집합 관련 연산이 가능하다.
|