17. 정수 형식의 표현 범위
char 형식과 unsigned char 형식은 정수를 표현할 때도 사용할 수 있다고 했어요.
두 가지 형식 모두 1바이트를 할당하여 256가지의 정수를 표현할 수 있답니다.
unsigned char 형식은 부호없는 정수만 표현하므로 0~0xFF(0~255)까지 표현 가능해요.
char 형식은 최상위 비트가 0인 0x00~0x7F(0~127)까지는 부호없는 정수예요.
그리고 최상위 비트가 1인 0x80~0xFF(-128~-1)까지는 부호있는 정수죠.
◈ char 형식과 unsigned char 형식의 표현 범위 확인
#include <stdio.h>
int main()
{
char c = 0;
unsigned char uc = 0;
c = 0x7F; //최상위 비트가 0
uc = 0x7F;
printf("%d %d\n",c,uc);
c = 0x80; //최상위 비트가 1
uc = 0x80;
printf("%d %d\n",c,uc);
c = 0xFF;
uc=0xFF;
printf("%d %d\n",c,uc);
return 0;
}
◈ 실행 결과
127 127
-128 128
-1 255
다음은 부호 있는 정수를 표현하는 char, short, int, long 형식으로 표현할 수 있는 최대값과 최소값을 확인하는 코드예요.
◈ 부호 있는 정수 형식의 최소값과 최대값
#include <stdio.h>
int main()
{
char c = 0x7F;
short s = 0x7FFF;
int i = 0x7FFFFFFF;
long l = 0x7FFFFFFF;
long long ll = 0x7FFFFFFFFFFFFFFFLL;
printf("char max:%d ",c);
c = 0x80;
printf("char min:%d \n",c);
printf("short max:%d ",s);
s = 0x8000;
printf("short min:%d \n",s);
printf("int max:%d ",i);
i = 0x80000000;
printf("int min:%d \n",i);
printf("long max:%d ",l);
l = 0x80000000;
printf("long min:%d \n",l);
printf("long long max:%lld ",ll);
ll = 0x8000000000000000;
printf("long long min:%lld \n",ll);
return 0;
}
◈ 실행 결과
char max:127 char min:-128
short max:32767 short min:-32768
int max:2147483647 int min:-2147483648
long max:2147483647 long min:-2147483648
long long max: 9223372036854775807 long long min: -9223372036854775808
여기서 잠깐!
설마 눈으로만 보고 머리로 이해할 수 있다고 개발 도구에서 직접 확인하지 않는 것은 아니죠?
프로그램 언어는 개발 도구를 통해 몸으로 익혀야 합니다.
코드를 보면서 작성해도 오타가 나오거든요.
오류를 확인하면서 문제를 해결하는 것을 익히는 것은 매우 중요해요.
사용한 함수
printf 함수 [C언어 표준 라이브러리 함수 가이드]
동영상 강의
[C언어 무료 동영상 강의] 16. char 형식으로 정수 표현, 형변환 17. 정수 형식의 표현범위 18.overflow값 잘림 현상
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
22. 정리하기 (0) | 2016.01.01 |
---|---|
21. 명명법 (0) | 2016.01.01 |
[디딤돌 C언어] 20. 실수 형식의 메모리 구조 (0) | 2016.01.01 |
[디딤돌 C언어] 19. 실수는 근사치 (0) | 2016.01.01 |
18. Overflow와 값 잘림 현상 (0) | 2016.01.01 |
16. char 형식으로 정수 표현, 형변환 (0) | 2016.01.01 |
15. ASCII 코드 (0) | 2016.01.01 |
14. 부호있는 정수 표현 - 2진 보수 방식 (0) | 2016.01.01 |
13. 부호있는 정수 표현 - 1진 보수 방식 (0) | 2016.01.01 |
12. 부호있는 정수 표현 - 부호비트 필드 (0) | 2016.01.01 |