본 포스팅은 [C / C++] 진법과 비트와 연관되어있습니다. [C / C++] 진법과 비트를 보지 않으셨다면 보고오시는것을 추천드립니다.
비트 연산자
쉬프트
<<
, >>
화살표가 가리키는 방향으로 한칸씩 민다.
2진수
0 0 0 0 0 0 0 1 2=1
shift (⇐)×2
0 0 0 0 0 0 1 0 2=2
shift (⇐)×2
0 0 0 0 0 1 0 0 2=4
shift (⇐)×2
0 0 0 0 1 0 0 0 2=8
10진수
210 = 2
shift (⇐) ×10
2010 = 20
shift (⇐) ×10
20010 = 200
shift (⇐) ×10
200010 = 2000
10진수 에서 자릿수 하나가 올라간다. -> 10배 증가
2진수 에서 자릿수 하나가 올라간다. -> 2배 증가
소스코드
int n ;
unsigned char byte = 1;
byte = byte << 1;
byte <<= 1;
byte <<= 3;
byte <<= n;
byte = byte >> 1;
byte >>= 1;
byte >>= 3;
byte >>= n;
비트 곱
&
비트간의 AND 연산이다.
10010011 & 10000001 = 10000001
비트 합
|
비트간의 OR 연산이다.
10010011 ∣ 10000001 = 10010011
비트 역
~
비트간의 NOT 연산이다.
∼10010011 = 01101100
특정 자리의 비트값 제거
특정 비트값을 제거하기위해선 많은 방법이 있다.
그 중에서 ~
역 연산 후 &
곱 연산을 하여 비트 값을 제거할 수 있다.
unsigned int A;
unsigned int B;
A = A & (~B);
11101010 &= (∼00000010)
11101010 &= (11111101)
11101000
오류나 질문에 대한 문의 댓글 혹은 메일로 남겨주세요!