비트연산자 쉬워보이더니... 알수록 이해가 안되네요;
-----------------------------------
#include <stdio.h>
int main (void)
{
int x=-1;
printf("%d\n", x<<31);
}
------------------------------------
보시다시피 아주 간단한 소스입니다.
결과값은 당연히 음의 최대값 1000 0000 ~~ 0000 이 나옵니다.
그런데 할당된 4바이트가 넘어가버리고 x<<32가되면서 다시 -1이 할당됩니다. 이후로는 -2, -4 , -8 ...
즉...31~32구간 넘어갈때 1000 ~~ 0000 에서 갑자기 1111 ~~ 1111 (예상 : 0000 ~~ 0000)이 되버린겁니다. 그뒤로는 비트연산대로 -2, -4 , ... 반복하다 x<<64에서 다시-1... 그리고 다시반복;
왜그런걸까요 ?
제 생각으로는 할당된 주소와 주변 주소값으로부터 임의로 값을 빌려와 loop시켜서 그런거 같은데... 추측일뿐 정확히는 모르겠네요;
책에는 그저 계산방법만 나와있을뿐..
왜 1000 ~~ 0000 에거 갑자기 1111 ~~ 1111 이 나오는걸까요 ?
아래는 비트 연산이 어떻게 돌아가나 간단히 돌려보았습니다.
왜왜오애ㅗ애왜왜왜오애그런걸까요 ㅠ