본문 바로가기
Coding/C언어 - Codeup

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

by 이브(Eve) 2024. 8. 30.

# 1106 : int의 범위

입력 :

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

#include <stdio.h>

int main()
{
	printf("%d %d", 0x80000000, 0x7fffffff);

	return 0;
}

풀이

32비트이므로, 2진수로 나타낼 수 있습니다. (비트는 0 또는 1의 값을 가집니다. 따라서 0 또는 1의 값을 가지는 2진수의 가장 기본적인 단위가 비트입니다.)

32비트를 2진수로 나타내면,

  • 가장 작은 수는 10000000 00000000 00000000 00000000
  • 가장 큰 수는 01111111 11111111 11111111 11111111

이라고 합니다. 그렇다면 이를 16진수로 나타내기 위해 2진수를 16진수로 바꾸어 보겠습니다.

 

2진수를 16진수로 바꾸려면 2진수를 4자리씩 묶고 10진수로 변환한 뒤 그 10진수를 16진수로 바꿔주면 됩니다.

  • 4자리씩 분리 : 10000000 ➡️ 1000 0000
  • 1000 0000 ➡️ 8 0 (10진수) ➡️ 0x80 (16진수) (16진수는 앞에 0x를 붙여 표현합니다.)
  • 4자리씩 분리 : 11111111 ➡️ 1111 1111
  • 1111 1111 ➡️ 15 15 (10진수) ➡️ 0xff (16진수)

이렇게 계산하여 가장 작은 수와 가장 큰 수를 16진수로 나타내면

  • 가장 작은 수 : 0x80000000
  • 가장 큰 수 : 0x7fffffff

가 됩니다. 이를 정수로 출력하면 int형의 범위를 구할 수 있습니다.

-2147483648 2147483647

 

코드에 대한 피드백은 언제든지 환영입니다!