오늘은 쉬프트 연산에 대해 알아보겠습니다.
시프트 연산은 컴퓨터의 비트 연산중의 하나입니다.
이 시프트 연산은 2의 거듭제곱수를 곱셉,나눗셈 연산을 할때 사용합니다.
기호는 <<와 >>을 사용합니다.
예) a<<b, b>>a
이 연산의 의미는 연산 왼쪽의 숫자를 연산 오른쪽 숫자 비트만큼 좌, 우로 이동하라는 의미입니다.
2진법 숫자 계산이기 때문에 한칸마다 2를 곱하거나 나눕니다.
C99 표준을 참고하면 계산법이 나오고, 아래와 같습니다.
a<<b = a * 2^b
a>>b = a / 2^b
예를 들어 4<<2를 계산해보겠습니다.
공식으로 해보면 4 * 2^2 = 16입니다.
왜 이렇게되는지 아래에서 자세히 설명드리겠습니다.
4를 2진법으로 나타내면 0000 0100입니다.
여기서 쉬프트 연산에 의해 왼쪽으로 2비트를 이동시킵니다.
0000 0100 -> 0001 0000 이 됩니다.
그러므로 계산해보면 16이 나옵니다.
한개 더 예를 들어보면 16>>2를 계산해보겠습니다.ㅣ
공식으로 해보면 16 / 2^2 = 4입니다.
16을 2진법으로 나타내면 0001 0000입니다.
여기서 쉬프트 연산에 의해 오른쪽으로 2비트를 이동시킵니다.
0001 0000 -> 0000 0100 이 됩니다.
그러므로 계산해보면 4가 나옵니다.
쉬프트 연산을 사용하는 이유는 속도 때문입니다.
일반적으로 숫자를 곱하거나 나누게 되는 것보다 비트 연산이기 때문에 속도가 더 빠르게됩니다.
이러한 속도는 간단한 프로그램에서는 느껴지지 않습니다.
그러나 엄청난 규모의 프로그램에서는 이런 속도가 도움이 될 것입니다.
오늘 포스팅은 여기까지입니다
'프로그래밍 > 기타' 카테고리의 다른 글
[기타] aysnc thread란 (2) | 2024.05.26 |
---|---|
[기타] 해시테이블 (0) | 2021.04.30 |
[기타]Tika 라이브러리 (0) | 2020.10.26 |
[기타] 컴파일, 어셈블, 링킹, 인터프리터 (0) | 2019.07.06 |
[기타] 트레버싱 (0) | 2019.07.02 |