만약 이렇게 두개의 변수 가 있다면..

unsigned int a = 0x80000000

int a = 0x80000000

 

printf("%d\n", (a>>32))

이 결과는 코세님 강좌에서는 0

 

printf("%d\n", (b>>32))

이 결과는 코세님 강좌에서는 -1

 

제가 비쥬얼 스튜디오 2015를 쓰는데요..

이렇게 나옵니다..

unsigned int는 부호없는 정수형 아닌가요? 왜 음수가 나오죠...ㅠㅠ

 

unsigned short c = 0x8000

short d = 0x8000

이렇게 하고 16비트씩 오른쪽 시프트 연산하면

코세님 말처럼 정상적으로

0하고 -1이 나오는데..

 

unsigned int하고

int는 저렇게 나오네요..

 

질문1)

unsigned int로 본다면

그리고 0x00000001에서 오른족 쉬프트 연산하면 

더이상 갈 곳이 없는데..

0이 되는 이유가 머죠?

 

저는 왜 저렇게 나오는거죠..

 

질문 2)

int로 본다면

그리고 0x00000001에서 오른족 쉬프트 연산하면 

-1이 되는 이유가.. 오버플로우, 언더플로우 때문인가요??

 

질문 3)

int a = 0x8000000하면

오른쪽으로 쉬프트 연산해도 msb는 계속 1로 유지한 상태로 가나요?