일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 강의
- Windows Forms
- 알고리즘
- 졸업 작품
- 소켓 통신
- 동영상 강의
- 프로젝트
- 네트워크 프로그래밍
- 무료 동영상 강의
- C++
- 유튜브 동영상 강의
- 파이썬
- 실습
- c언어
- 산책하기 좋은 곳
- 실습으로 다지는 c#
- 원격 제어 프로그램
- 표준 입출력
- 졸업 작품 소재
- 충남 천안
- c#
- 소스 코드
- 안드로이드 앱 개발
- 표준 라이브러리 함수
- 추천
- 동영상
- 언제나 휴일
- 클래스 다이어그램
- 언제나휴일
- 캡슐화
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
정수 형식과 표현 범위 (char, short, int, long,…) 본문
안녕하세요. 언제나 휴일에 언휴예요.
이번 강의에서는 정수 형식과 표현 범위를 알아볼게요.
== 다루는 내용
1. 정수 형식의 종류
2. 정수 형식의 메모리 크기
3. 정수 형식의 표현 범위
정수 형식의 종류
C언어에서 제공하는 정수 형식은 다음처럼 여러 가지 정수 형식을 제공합니다.
char, short, int, long, long long
C언어에서 제공하는 정수 형식은 음수를 포함하지 않는 정수 형식도 제공합니다.
unsigned 키워드가 붙는 형식은 모두 음수를 포함하지 않는 정수 형식입니다.
unsigned char, unsigned short, unsigned int, unsigned long, …
형식을 unsigned 만 표현하면 unsigned int로 취급합니다.
정수 형식의 메모리 크기
이번에는 정수 형식의 메모리 크기를 알아봅시다.
먼저 문자 리터럴 표현과 정수 리터럴 표현의 크기를 알아볼게요.
리터럴은 소스 코드에서 고정된 값을 표현하는 것을 말합니다. 코드 상에 27, ‘a’, “Hello”처럼 표현하는 것을 리터럴 표현이라고 부릅니다.
크기를 확인할 때는 sizeof를 이용합니다.
int sizeof(표현)
#include //표준 라이브러리 헤더
#include //표준 입출력 헤더
int main()
{
printf("%d %d\n", sizeof('a'), sizeof(23));
system("pause");
return 0;
}
실행 결과는 둘 다 4입니다. 이를 통해 문자 리터럴 표현도 int 형식 취급하는 것을 알 수 있어요.
4 4
unsigned 가 붙은 형식과 붙지 않은 형식의 메모리 크기는 같습니다. 정수 형식의 크기를 알아볼게요.
#include //표준 라이브러리 헤더
#include //표준 입출력 헤더
int main()
{
printf("%d %d\n", sizeof('a'), sizeof(23));
printf("char:%d\n", sizeof(char));
printf("short:%d\n", sizeof(short));
printf("int:%d\n", sizeof(int));
printf("long:%d\n", sizeof(long));
printf("long long:%d\n", sizeof(long long));
system("pause");
return 0;
}
실행 결과는 다음과 같습니다.
char:1
short:2
int:4
long:4
long long:8
gcc는 다음과 같습니다.
char:1
short:2
int:4
long:8
long long:8
정수 형식의 표현 범위
정수 형식의 첫 번째 비트는 부호 비트입니다. (unsigned 형식들은 부호 비트가 없습니다.)
1바이트인 char 형식에서 표현할 수 있는 제일 큰 수는 이진수로 0111 1111 입니다.
16진수로 0x7F입니다.
C언어의 정수 형식에서 부호 비트가 1일 때 나머지 비트를 2진 보수를 취한 값이 크기입니다.
이진수 1000 0000 을 예로 들게요.
부호 비트가 아닌 나머지 비트를 0은 1로 1은 0으로 바꾸는 것이 1진 보수입니다.
000 0000 => 111 1111 (10진수 127)
2진 보수는 1진 보수에 1을 더하면 구할 수 있어요. (크기가 128)
따라서 이진수 1000 0000은 -128입니다.
다음은 정수 형식의 표현 범위를 확인하는 코드입니다.
short 형식의 표현 범위를 확인하기 위해 명식적 형식 변환을 사용했어요.
명식적 형식 변환: (형식)표현
#include //표준 라이브러리 헤더
#include //표준 입출력 헤더
int main()
{
printf("%d %d\n", sizeof('a'), sizeof(23));
char c1 = 0x80, c2 = 0x7F;//1000 0000, 0111 1111
printf("char:%d, %d ~ %d\n", sizeof(char),c1,c2);
printf("short:%d, %d~%d\n", sizeof(short),(short)0x8000,0x7FFF);
printf("int:%d,%d~%d\n", sizeof(int),0x80000000,0x7FFFFFFF);
printf("long:%d\n", sizeof(long));
printf("long long:%d, %lld~%lld\n", sizeof(long long),0x8000000000000000,0x7FFFFFFFFFFFFFFF);
system("pause");
return 0;
}
실행 결과는 다음과 같습니다.
4 4
char:1, -128 ~ 127
short:2, -32768~32767
int:4,-2147483648~2147483647
long:4
long long:8, -9223372036854775808~9223372036854775807
언제나휴일 추천 여행 및 산책
'C & C++ > 언제나 C언어' 카테고리의 다른 글
산술 연산과 overflow (0) | 2025.01.03 |
---|---|
실수 형식 표현 범위, FLT_MIN, FLT_MAX, FLT_TRUE_MIN (0) | 2025.01.03 |
실수 형식 double, float 표현과 출력 (0) | 2025.01.03 |
확장 문자 형식 wchar_t와 한글 문자 (0) | 2025.01.03 |
문자 형식 char와 ASCII 코드 (1) | 2025.01.03 |
정수 표현 및 출력 (10진수, 8진수, 16진수) (0) | 2025.01.03 |
자신의 정보 출력 – puts 함수, printf 함수 (0) | 2025.01.03 |
언제나 C언어 시작합니다. (1) | 2025.01.03 |