본문 바로가기
프로그래밍/c언어 기초공부

[C언어 기초-08] 비트 연산자 시프트 연산자

by 졸린이 2024. 1. 8.
반응형

시프트 연산자

비트 시프트 연산자는 왼쪽의 값을 오른쪽 값만큼 비트를 왼쪽 혹은 오른쪽으로 이동시키는 연산자이다.

결과적으로는 비트를 이동시킬 때마다 2의 거듭제곱만큼 곱셈 또는 나눗셈을 한다.

연산자 의미 기본 형식 설명
<< left shift x << y x의 비트 표현을  y값 만큼 왼쪽으로 이동
>> right shift x >> y x의 비트 표현을 y값 만큼 오른쪽으로 이동

 

왼쪽 이동 연산

비트를 왼쪽으로 이동시키며 이동 후 오른쪽 빈 공백은 0을 채워 넣고 왼쪽에서 밀려난 비트들은 버린다.

예를 들어 4 << 1 은 4를 비트로 표현하고 왼쪽으로 1만큼 이동시키는 의미이고 값은 8이 된다. 

이걸 8비트로 표현해서 보면

0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0

이렇게 3번째 위치한 1이 왼쪽으로 한 칸 이동하면서 8이 된다. 4 * (2의 1제곱)이 된다.

 

오른쪽 이동 연산

마찬가지로 오른쪽으로 이동하고 밀려난 부분은 버리고 왼쪽에 빈 공백은 0으로 채워 넣는다.

16 >> 3

0 0 0 1 0 0 0 0

 

0 0 0 0 0 0 1 0

16을 8비트로 표현한 후 오른쪽으로 이동시킨다. 값은 2가 된다. 16 / (2의 3제곱)이 된다.

반응형

댓글