[기본원리] 오른쪽 쉬프트 연산 : 산술 쉬프트
- 프로그래밍 정보
- 2010. 7. 12.
반응형
2010/07/11 - [Programing/기본원리] - 2진수의 음수표현법!
2010/07/11 - [Programing/기본원리] - 재미있는 쉬프트 연산!
2010/07/10 - [Programing/기본원리] - 2진수의 의미.
오른쪽 쉬프트 연산에는 논리쉬프트 와 산술쉬프트 두가지가 있습니다.
여기에선 산술쉬프트 의 내용만 포스팅 할까 합니다.
이전에 왼쪽 쉬프트 연산에 이어 이제는 오른쪽 쉬프트 연산입니다.
실제로 왼쪽 쉬프트 연산보단 조금 복잡하지만 그렇다고 엄청 어려운건 또 아니니
천천히 읽어 보시길 ^^;
읽기전에 손가락 한번 클릭~ >_<
고마워요 ~ Chu ~ ♥
오른쪽 쉬프트 연산 : 산술 쉬프트
오른쪽 쉬프트 연산에서 상위 빈자리에는 0을 넣는 경우와 1을 넣는 경우 두가지가 있습니다.
2진수 연산에서 보수로 표현된
음수의 경우엔 오른쪽 쉬프트 후 1을 넣고,
양수인 경우에는 0을 넣으면 되는데요,
실제로 오른쪽 쉬프트 연산에는 그래픽 표현등에 사용되는 ' 논리 쉬프트 ' 와
값을 계산하는 등에 사용되는 ' 산술 쉬프트 ' 가 있습니다.
산술 쉬프트는 음수를 표현하기 위해 부호비트인 최상위비트를 유지하는 기술 입니다.
예를들어 10진수 -4 는 2진수로 11111100 이 되는데,
이것을 오른쪽으로 두번 쉬프트 한다면 산술 쉬프트에서는 부호비트를 유지하기 때문에 상위 빈자리에 모두 1을 넣게 됩니다.
결과로 나온 11111111 은 10진수로 -1 이 됩니다.
즉, -4의 1/4 배가 된 것이지요.
※ 논리 쉬프트와 산술 쉬프트를 구별해야 하는 경우는 오른쪽 쉬프트 일때 뿐입니다.
부호 확장
부호 확장이란 무엇일까요?
부호 확장이란 데이터의 비트 크기를 확장하는 것입니다.
예를들어, 8비트를 16비트로 만드는 경우처럼요..
양수값의 부호 확장에는 상위자리를 0으로 채우면 되고,
음수값의 부호 확장에는 상위 자리를 1로 채우면 끝!!
이처럼 양수, 음수 모두의 경우에도 부호 비트의 값으로 상위 자리를 채우면
부호 확장이 가능합니다 .
반응형