이것을 실행하면 왜 음수가 표시됩니까?부호없는 int를 음수로 비트 시프트 할 수있는 방법은 무엇입니까?
unsigned int a = 1 << 31;
printf("%d",a);
이미 컴퓨터에서 정수 크기를 확인했으며 4 바이트입니다. 그래서 내 정수는 32 비트로 구성되어 있고 가장 중요한 비트까지 왼쪽으로 31 교대를하고 있습니다. 그것은 양수 여야 함을 의미하지만 항상 부정적입니다.
내가 무엇을 얻을 : -2147483648
내가 기대했던 : 일부 양수 (아마 1073741824)
내가 무슨 말이냐?
을! –
'printf ("% u", a);'수정해야합니다. –