VC 컴파일러 기준. (int형의 경우)
이 때 int형은 signed라고 가정.
(unsigned의 경우는 무조건 논리 쉬프트 연산을 하게 됨. 부호 안따지고 걍 단순하게 쉬프트 하는것.)
<<연산을 하는 경우 :
양수건 음수건 MSB를 포함해서 왼쪽으로 밀리고, 오른쪽의 비는 비트는 0으로 채워짐
단 한번에 32칸 이상 미는경우 circular shift가 되어버림. (-1을 왼쪽으로 한번에 32칸 밀면 다시 -1이됨)
>>연산을 하는 경우 :
양수의 경우 : MSB를 포함해서 오른쪽으로 밀리고, 왼쪽의 비는 비트는 0으로 채워짐
음수의 경우 : MSB를 유지하는 시스템의 경우 오른쪽으로 밀린만큼 왼쪽의 비는 비트는 1로 채워짐.
단 한번에 32칸 이상 미는경우 양수든 음수든 둘다 circular shift가 됨.
-----------------------------------------------------------------------------------------
char의 경우에는 int형의 경우와 같지만 circular shift 문제가 발생하지 않는다.
'C > 공개글' 카테고리의 다른 글
open() 으로 파일권한 설정하는법 (0) | 2013.05.01 |
---|---|
리틀엔디안에 따른 순서의 문제 (0) | 2013.04.14 |
왜 싱글포인터의 주소값은 더블포인터로 받아야 할까? (내생각) (0) | 2013.04.13 |
WSAGetLastError() 호출 후 10038이 반환되는 경우 (0) | 2013.03.04 |
프롬프트창에서 실행 시 fopen 에러가 나는 이유? (0) | 2013.02.19 |