티스토리 뷰

System Story/CentOS 5,6

Bash Shift 연산

불량펭귄 helperchoi 2015. 4. 1. 11:41

 

Shift 연산이란 데이터를 비트단위로 이동시켜 값의 증감을 구현하는 연산자이며,

비트단위에 연산이나 데이터 조작이 필요할때 사용한다.

 

※ 사실 본인도 개발자가 아닌지라 Shift 연산을 언제 왜 써야 하는지는 아직도 이해하지 못하고 있음.

 

Bash Shell 에서도 아래와 같이 Shift 연산 기능을 제공하고 있다.

 

 

1. Right 연산의 표현과 계산 방식

 

[root@s-node01 ~]#
[root@s-node01 ~]# echo $(( 100 >> 4 ))

6

 

- 10진수 데이터 100을 표현한 2진 Bit(1100100)를 오른쪽으로 4Bit 이동

- 계산식 : 100 / 2^4 = 6 (나머지 값은 버림)

 

 

2. Left 연산의 표현과 계산 방식

 

[root@s-node01 ~]#
[root@s-node01 ~]# echo $(( 100 << 4 ))

1600

 

- 10진수 데이터 100을 표현한 2진 Bit(1100100)를 왼쪽으로 4Bit 이동

- 계산식 : 100 * 2^4 = 1600

 

 

3. 간단한 쉬프트 연산 예제

 

[root@s-node01 ~]#
[root@s-node01 ~]# RUNCNT=10 && for ((RUN=0; RUN <= RUNCNT ; RUN++)); do echo "BINARY_NUM : ${RUN} - $(( 100 << ${RUN} ))"; done
BINARY_NUM : 0 - 100
BINARY_NUM : 1 - 200
BINARY_NUM : 2 - 400
BINARY_NUM : 3 - 800
BINARY_NUM : 4 - 1600
BINARY_NUM : 5 - 3200
BINARY_NUM : 6 - 6400
BINARY_NUM : 7 - 12800
BINARY_NUM : 8 - 25600
BINARY_NUM : 9 - 51200
BINARY_NUM : 10 - 102400
[root@s-node01 ~]#
[root@s-node01 ~]#
[root@s-node01 ~]# RUNCNT=10 && for ((RUN=0; RUN <= RUNCNT ; RUN++)); do echo "BINARY_NUM : ${RUN} - $(( 100 >> ${RUN} ))"; done
BINARY_NUM : 0 - 100
BINARY_NUM : 1 - 50
BINARY_NUM : 2 - 25
BINARY_NUM : 3 - 12
BINARY_NUM : 4 - 6
BINARY_NUM : 5 - 3
BINARY_NUM : 6 - 1
BINARY_NUM : 7 - 0
BINARY_NUM : 8 - 0
BINARY_NUM : 9 - 0
BINARY_NUM : 10 - 0
[root@s-node01 ~]#
[root@s-node01 ~]#

 

 

 

 

 

반응형
댓글
댓글쓰기 폼