상세 컨텐츠

본문 제목

C언어 강좌 6강 자료형 6-4강

카테고리 없음

2020. 5. 15. 18:30

본문

정수형의 양수 표현 범위를 2배로 늘리는 unsignde 자료형이라는 것도 있습니다!

 

정수형 자료형들인

char, short, int, long, long long은 키워드 signed나 unsigned를 붙여서 사용할 수 있습니다.

키워드 signed는 생략이 가능합니다.

 

int a;

signed int a;

위 2개는 동일 하다고 보면 됩니다.

 

C로 개발을 하는 개발자들 대부분은 signed를 생략합니다.

그렇다면 unsiged의 의미는 무엇일까요

 

 

 

signed는 양수, 0, 음수를 모두 표현이 가능 합니다.

unsigned는 0과 양수만 표현을 합니다.

 

char

정수형: char(signed char), 메모리 크기: 1Byte(8Bit), 데이터 표현 범위: -128 ~ +127

     정수형: unsigned char, 메모리 크기: 1Byte(8Bit), 데이터 표현 범위: 0 ~ 255(127 + 128)

 

short

정수형: short(signed short), 메모리 크기: 2Byte(16Bit), 데이터 표현 범위: -32768 ~ +32767

       정수형: unsigned short, 메모리 크기: 2Byte(16Bit), 데이터 표현 범위: 0 ~ 65535(32767 + 32768)

 

int

정수형: int(signed int), 메모리 크기: 4Byte(32Bit), 데이터 표현 범위: -2147483648 ~ +2147483647

       정수형: unsigned int, 메모리 크기: 4Byte(32Bit), 데이터 표현 범위: 0 ~ 4294967295‬

(2147483647 + 2147483648)

 

long

정수형: short(signed long), 메모리 크기: 4Byte(32Bit), 데이터 표현 범위: -2147483648 ~ +2147483647

       정수형: unsigned long, 메모리 크기: 4Byte(32Bit), 데이터 표현 범위: 0 ~ 4294967295‬

(2147483647 + 2147483648)

 

long long

정수형: short(signed long long), 메모리 크기: 8Byte(64Bit), 데이터 표현 범위:

-9223372036854775808 ~ +9223372036854775807

       정수형: unsigned long long, 메모리 크기: 8Byte(64Bit), 데이터 표현 범위: 0 ~ 1844674407447379551615

(9,223,372,036,854,775,808 + 9223372036854775807)

 

long long 같은경우는 너무나 크기때문에 1844674407447379551615의 값을 저장을 하고 출력을 할경우 제대로 나오지 않거나 에러가 발생됩니다.

 

아래 이미지는 char와 long long의 signed와 unsigned로 해서 프로그래밍을 한겁니다.

 

4행 singned char c1에 130을 저장

5행 unsingned char c2에 130을 저장

 

7행 singned long long ll1에 1309223372036854775810을 저장

8행 unsingned long long ll2에 1309223372036854775810을 저장

 

10행 변수 c1을 출력을 함 오버 플로우 발생 -126을 출력을 함

11행 변수 c2를 출력을 함 130 출력

 

13행 변수 ll1을 출력을 함 오버 플로우 발생 -9223372036854775806을 출력을 함

14행 변수 ll2를 출력을 함 9223372036854775810 출력

 

 

실행 결과

 

long long은 최대까지 저장을 못합니다.

지금은 못하지만 나중에 128비트 운영체제및 128비트 CPU가 나온다면 가능 할껍니다.

 

댓글 영역