[C언어 코드업 문제풀이] CodeUp 1106 : int의 범위

이번 포스팅은 C언어 코드업 1106:int의 범위 문제풀이입니다.

 

1. 문제 설명

앞으로 많이 사용될 변수 int 자료형의 범위를 알아내는 것이 이번 문제의 정답이다.

int는 정수형이고 32비트 자료형이다.

2진수로 나타내면 가장 작은 숫자는

10000000 00000000 00000000 00000000

이고, 가장 큰 숫자는 

01111111 11111111 11111111 11111111

이다.

우리는 16진수 입력방법을 이용하면 쉽게 이 문제를 해결할 수 있다.

 

2. 입력

입력은 없다.

 

3. 출력

int형의 가장 작은 수 a와 int형의 가장 큰 수 b를 차례대로 공백으로 분리하여 출력한다.

출력 예) a b       <--이런 형태(a, b는 숫자 값)

이 문제는 정답을 숨기기 위해 Special Judge로 채점합니다.^^

정~~ 모르겠으면 인터넷 검색이라도 해보는 센스~!!

 

도움말

참고)

대입문을 사용할 때 8진수는 0을 앞에 붙여서 입력하고,

16진수는 0x를 붙여서 입력합니다.

예)

a = 0xff;     //a에 16진수 ff를 넣음. ff는 십진수로 255입니다.

5. 문제 풀이

 

#include<stdio.h>
 
int main(void) {
    int min_a = 0x80000000;
    int max_b = 0x7fffffff;
 
    printf("%d %d", min_a, max_b);
    return 0;
}

 

결과: -2147483648 2147483647

 

 

int형의 표현 범위와 동일한 것을 확인할 수 있습니다.  

 

int의 최솟값은  0x80000000;  최댓값은  0x7fffffff 로 표현할 수 있습니다.

문제 설명에

"

int는 정수형이고 32비트 자료형이다.

2진수로 나타내면 가장 작은 숫자는

10000000 00000000 00000000 00000000

이고, 가장 큰 숫자는 

01111111 11111111 11111111 11111111

                                                     "

라 하였는데 첫 번째 비트가 최소값은 0 최대 값은 1인 이유는 첫번째 비트는 부호(+-)를 결정하는 부분이기 때문입니다.

그리고 16진수로 표현하게 되면 10000000은 1000 0000 이므로 0x80, 01111111은 0111 1111이므로 0x7f 입니다.

 

댓글()