<< : 왼쪽 시프트 연산자
>> : 오른쪽 시프트 연산자
사용 방법
A << B
A의 모든 비트를 B만큼 왼쪽으로 이동시킵니다.
ex) 8 << 4
A >> B
A의 모든 비트를 B만큼 오른쪽으로 이동시킵니다.
ex) 8 >> 2
결론
A << B의 연산 결과는 A*(2의 B제곱)이 됩니다.
A >> B의 연산 결과는 A/(2의 B제곱)이 됩니다.
유의할 점
코드상에서 덧셈뺄셈 연산은 시프트 연산보다 높은 우선순위를 가집니다.
따라서 괄호 표시를 하는 것을 추천합니다.
ex) 1 << 2 + 3 << 4 는 1 << (2 + 3) << 4과 같습니다.
추가 사항
논리 시프트 : 레지스터에 있는 데이터 비트에 대한 이동,
비어있는 비트는 0으로 채워지고 범위를 넘어가는 비트는 사라집니다.
산술 시프트 : 레지스터에 있는 데이터 비트가 부호를 가진 경우,
부호비트는 그대로 두고 수의 크기를 나타내는 비트만 이동시킵니다.
산술 시프트와 논리 시프트를 구분해야하는 경우는 오른쪽 시프트를 할 때!
'C,C++ > 공부 낙서' 카테고리의 다른 글
공부하면서 빠트린 것들 끄적끄적 - 람다 (0) | 2022.11.21 |
---|---|
공부하면서 빠트린 것들 끄적끄적 - 컴파일타임, 런타임 (0) | 2022.11.18 |
공부하면서 빠트린 것들 끄적끄적 - 연산자 (0) | 2022.11.18 |
공부하면서 빠트린 것들 끄적끄적 - 템플릿, 타입ID (0) | 2022.11.16 |
공부하면서 빠트린 것들 끄적끄적 - 가상함수, 형변환 (0) | 2022.11.15 |