char x = -128로 선언한 다음에
x를 1bit씩 출력하도록 하면
1000 0000으로 출력이 됩니다. 이건 문제가 안 되는데
근데 이걸 32bit를 출력하도록 해보면(함수를 작성)
1111 1111 1111 1111 1111 1111 1000 0000 이 됩니다.
근데 이걸 함수 인자로 -x를 넘겨주게 되면
0000 0000 0000 0000 0000 0000 1000 0000 이 됩니다.
-x로 변환한 다음엔 무슨 일이 일어나는건가요 내부에서?
제 추측은
1. 먼저 1000 0000 에서 1000 0000으로 변환(2의 보수)
2. 그다음에 singed int로 0을 붙임 -> 0000 0000 .... 0000 1000 0000
인것 같은데
왜 그냥 32bit로 출력하도록 하면 MSB가 확장되고
-x로 출력하도록 하면 위와같이 되는건가요?