c++ long long 으로 표현할 수 있는 수에 관하여. boj 11652번 문제 연관

처음에 boj 11652번 문제를 접하고, -2^62보다 크거나 같고, 2^62보다 작거나 같다. 

라는 부분을 읽었을때, long long 으로 표현할 수 있는 범위가 -2^61~2^61-1 이지 않나? 이건 그 범위를 넘어가는 부분 아닌가?

라고 생각해서 한참 생각을 하다가 long long으로 표현하는 범위를 넘어서는 범위면 string으로 문제를 해결 해야 하는데, 그런 의도로 낸 문제는 아닌것 같고, 고민을 좀 오래 했다. 

그러다가 아무래도 long long 으로 표현하는 수의 범위에 대해서 다시 알아보자 싶어서 chatGPT에 검색을 해보았다. 

검색을 해보니 

-2^63부터 2^63-1까지의 범위였다. 

내가 -2^61부터 2^61-1까지의 범위로 착각한 이유는 

int의 범위가 -2^31~2^31-1 까지인데, 이때에 31 때문에 long long도 61이라고 착각한듯 하다. 

이건 2^5의 값에 해당하는 32의 값에서 1을뺀 것이었는데, long long은 2^6의 값인 64에서 1을 뺀 ^63 자리까지이고.

int로 표현할 수있는 수의 범위, long long 으로 표현할 수 있는 수의 범위에 대해서는 이번 기회를 통해서 다시한번 이해하고 각인시키는 시간을 가져야 겠다. 

 

long long 은 -2^63~2^63-1.

int는 -2^31~2^31-1.

참고로 signed의 경우이다. 

 

  Comments,     Trackbacks