기타지식들/운영체제

산술Shift연산

원원 2017. 2. 16. 16:30

 

 

산술Shift는 "부호"를 고려해서 자리를 이동시킨다.

왼쪽으로 이동하면 2의 n승을 곱한 값과 같고 오른쪽으로 이동은 2의 n승으로 나눈 값과 같다.

 

- 왼쪽 이동

양수

n만큼 이동하면 곱하기 2의 n승 해준다.

 

음수

1. 부호와 절대치 Padding bit : 0

2. 1의 보수법 Padding bit : 1

3. 2의 보수법 : Padding bit : 0

 

 

- 오른쪽 이동

양수

n만큼 이동하면 나누기 2의 n승 해준다.

음수

1.부호와 절대치 : Padding bit:0 오차발생:0.5증가

2. 1의 보수법 : Padding bit : 1 오차발생 : 0.5증가

3. 2의 보수법 : Padding bit : 1 오차발생 0.5 감소

 

예) 2의보수 1100 1000을 우측쉬프트3회 하세요

부호 1고정하고 나머지 오른쪽 3이동한다음에 빈칸은 페딩비트가 1이므로 1로 채워준다.

1XXX 1001(X:padding bit) -> 1111 1001

 

예) 부호와 절대치 방식에서 -50을 우측2회 하세요

방법1)

50 = 0011 0010

-50 = 1011 0010(부호와 절대치)

1XX0 1100 (x:padding bit) -> 1000 1100

방법2)

-50%4 = -12.5 

부호와 절대치이므로 오차발생 0.5증가하면 -12다.

-12 = 1000 1100

 

예) 부호와 절대치 방식에서 -50을 좌측 1회 하세요

50 = 0011 0010

-50 = 1011 0010(부호와 절대치)

1110 010x(x:padding bit) -> 1110 0100 (-100)