[C언어] 기본 데이터형(primitive Date type) - 정수형
[C언어] 기본 데이터형(primitive Date type) - 정수형
By i!kohong(아이코홍)
정수형 종류
- signed 형 (부호 있는 정수형)
- unsigned 형 (부호 없는 정수형)
■ 정수형 크기 (32bit 플렛폼 기준)
- short형 : 2byte
- int 형 : 4byte
- long 형 : 4byte
부호 있는 정수형
최상위 비트(most significant bit)를 부호 비트(sign bit)로 사용한다.
일반적으로 정수 값을 저장할 때 주로 사용.
부호 비트가 1 : 음수
부호 비트가 0 : 양수
▶ 음수 표현 방법
2의 보수(2's compliment)를 사용
정수형 -N의 값을 2진수로 표현
1. N의 값을 2진수로 표현을 한다.
2. 모든 비트를 반전한다. (0 → 1, 1 → 0)
3. 마지막 비트에 +1의 값을 더한다.
예시
short s = - 10;
부호가 없는 정수형
최상위 비트(most significant bit)의 값을 저장하는 용도로 사용
바이트 단위의 데이터를 저장할때 주로 사용.
부호가 있는 정수형의 최상위 비트 1 : 음수를 뜻함
부호가 없는 정수형의 최상위 비트 1 : 2의 n승 값
예시
short s = -10;
unsigned short us = 65526;
오버 플로어 ,언더 플로어
값의 유효 범위를 넘어서 다른 결과값을 갖게 되는 경우
오버플로우, 언더플로우가 발생하면 해당 데이터형의 유효 범위 내의 값으로 설정됨.
■ 정수형 유효 범위와 오버 플로어, 언더 플로어
※ 유효 범위
분류 | 데이터형 | 바이트 크기 | 유효 범위 |
문자형 | char | 1 | -128 (-2⁷) ~ 127 (2⁷-1) |
unsigned char | 1 | 0 ~ 255(2⁸ - 1) | |
정수형 | short | 2 | -32768(-2¹⁵) ~ 32767(2¹⁵-1) |
unsigned short | 2 | 0 ~ 65535(2¹⁵-1) | |
int | 4 | -2147483648(-2³¹) ~ 2147483647(2³¹-1) | |
unsigned int | 4 | 0 ~ 4294967295(2³²-1) | |
long | 4 | -2147483648(-2³¹) ~ 2147483647(2³¹-1) | |
unsigned long | 4 | 0 ~ 4294967295(2³²-1) | |
실수형 | float | 4 | ± 1.17549 X 10¯³⁸ ~ ± 3.40282 X 10³⁸ |
double | 8 | ± 2.22507 X 10¯³⁰⁸ ~ ± 1.79769 X 10³⁰⁸ | |
long double | 8 | ± 2.22507 X 10¯³⁰⁸ ~ ± 1.79769 X 10³⁰⁸ |
참고
■ 변수의 데이터형
변수에 저장되는 이진표현이 같더라도 변수의 데이터형이 무엇인가에 따라 값의 의미가 달라짐.
문자형인 char형도 1 byte 크기의 정수형처럼 사용이 가능함.
오버 플로어
※ 유효 범위의 최대값에서 벗어나 최소값으로 돌아가 값이 커지는 경우
예시
short s = 32767;
s = s + 1;
결과값 : -32768
unsigned short us = 65535;
us = us + 1;
결과값 : 0
언더 플로어
※ 유효 범위의 최소값에서 벗어나 최대값으로 돌아가 값이 작아지는 경우
예시
short s = -32768;
s = s - 1;
결과값 : 32767
unsigned short us = 6;
us = us - 9;
결과값 : 65533