반응형
시프트 연산자
비트 시프트 연산자는 왼쪽의 값을 오른쪽 값만큼 비트를 왼쪽 혹은 오른쪽으로 이동시키는 연산자이다.
결과적으로는 비트를 이동시킬 때마다 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제곱)이 된다.
반응형
'프로그래밍 > c언어 기초공부' 카테고리의 다른 글
[C언어 기초-10] 복합 대입 연산자 (산술 대입 연산자, 비트 대입 연산자) (0) | 2024.08.01 |
---|---|
[C언어 기초-09] 비트 연산자 논리 연산자 ~, &, |, ^ (0) | 2024.01.25 |
[C언어 기초-07] 논리 연산자 and, or, not연산자 &&, ||, ! (0) | 2021.08.21 |
[C언어 기초-06] 관계(비교) 연산자 (0) | 2021.08.18 |
[C언어 기초-05] 연산자 (대입, 산술, 증감연산자) (0) | 2021.08.03 |
댓글