int가 32비트라고 가정하면 msb는 양/음을 나타내는데 쓰이고 나머지 31비트로 값을 나타내는거임
익명(1.225)2021-09-12 09:17
답글
31비트를 전부 1로 나타내면 a의 최댓값이고 공식에 따라서 2^31 - 1이라 저 숫자가 나오는거임
익명(1.225)2021-09-12 09:18
답글
2진수를 16진수로 나타내는건 어렵지 않으니까 검색해보고
익명(1.225)2021-09-12 09:19
이해 완료했습니다! - dc App
익명(gyuuuuu817)2021-09-12 09:46
사실 컴퓨터에는 부호형이 없어. 범용적인 연산에서도 부호형 구분하는 경우는 많이 없고 분기 명령어에서 가끔 쓰이는 경우가 있지. 1번은 왜 그렇게 된거냐 하면 그냥 int형의 최대값이 그렇게 되어있을 뿐이야. 2번도 특별한 이유없이 부호형 -1이 무부호형의 최대값이 된거야. 우연의 일치일 뿐이고 너무 깊게 생각하진 마라.
일단 저거는 2진수가 아니라 16진수고 구하려면 16의 7제곱*7해주면 될듯? 값 확인 방법은 printf("%x",2147483647 ); 요렇게 하면 16진수로 바꿀 수 있음..
아 맞다 16진수 ㅋㅋㅋ 감사합니다 좀 더 공부해올게요 - dc App
unsigned int -1대입은 오버플로우 쪽 참고하셈..
아 16의 7제곱+7하면 안되겠다
172=10^2+7*10^1+2*10^0 이듯. 16의 1승부터 15승까지의 합+ 16의 16승곱하기 7
오버플로우->언더플로우
16의 1승*16+16의 2승*16 ... 부터 15까지 + 16의 16승 곱하기 7
a가 왜 저 숫자가 나오는지는 이해함?
int가 32비트라고 가정하면 msb는 양/음을 나타내는데 쓰이고 나머지 31비트로 값을 나타내는거임
31비트를 전부 1로 나타내면 a의 최댓값이고 공식에 따라서 2^31 - 1이라 저 숫자가 나오는거임
2진수를 16진수로 나타내는건 어렵지 않으니까 검색해보고
이해 완료했습니다! - dc App
사실 컴퓨터에는 부호형이 없어. 범용적인 연산에서도 부호형 구분하는 경우는 많이 없고 분기 명령어에서 가끔 쓰이는 경우가 있지. 1번은 왜 그렇게 된거냐 하면 그냥 int형의 최대값이 그렇게 되어있을 뿐이야. 2번도 특별한 이유없이 부호형 -1이 무부호형의 최대값이 된거야. 우연의 일치일 뿐이고 너무 깊게 생각하진 마라.