- 3. 자료형.2022년 01월 25일 22시 21분 17초에 업로드 된 글입니다.작성자: sooooong_minseok
비트(Bit) : 두 가지 중 한 가지 값을 저장할 수 있는 단위데이터 저장 단위
바이트(Byte) : 8개의 비트로 구성된 저장 단위.
2 X 2 X 2 X 2 X 2 X 2 X 2 X 2 X = 2^8 = 256 >>256가지 상황 중 하나를 표현 가능하다는 의미.
1Byte >>x1024 1KByte >>x1024 1MByte >>x1024 1GByte >>x1024 1TByte 4 Bytes = 32bits
2^10=2X1024를 의미합니다.
고로,
2^32 = 2^2 x 2^10 x 2^10 x 2^10 = 4Gbytes
필요한 만큼 나눠서 메모리를 사용한다!!!!
256 = 1바이트는 0~255사이의 값을 저장할 수 있다.
-32비트, 64비트 운영체제
32비트 운영체제 : 32비트 단위로 메모리를 처리한다. 32비트 4Gbyte 번지까지 주소를 메모리로 저장한다는 것을 의미.
그 이상은 이용하지 못한다.
//64비트 운영체제 : (64비트이면 8바이트 주소를 사용하기 때문에 많이 커집니다 ㅎ 2^4 x 2^10 x 2^10 x 2^10 x 2^10 x 2^10 x 2^10 = 16EB(엑사바이트)입니다. EB(엑사 바이트)는 GB(기가 바이트), TB(테라 바이트), PB(페타 바이트) 다음입니다.)
부호 비트 양수와 음수를 구별하기 위한 비트
2x 2x 2x 2x 2x 2x 2 = 2^7 = 128
양수의 표현 범위 : 0 ~ 127
음수의 표현 범위 : -128 ~ -1
부호의 개념을 가지는 1Byte(2^8)의 표현 범위 -128~0~127
부호 비트 예제
1 0 0 0 0 0 0 부호가 있는 자료형 : -128
부호가 없는 자료형 : 128
1 1 1 1 1 1 1 1 부호가 있는 자료형 : -1
부호가 없는 자료형 : 255
아스키코드 아스키 코드 출처 - https://www.kanglab.com/ascii.htm
십진법 A ~ Z (대문자) 65 ~ 90 a ~ z (소문자) 97 ~ 122 0 ~ 9 (숫자) 48 ~ 57 128~255까지 있음.
이외 아스키코드 + 확장 아스키 코드 - https://www.ascii-code.com/
자료형은 왜 필요한가???
자료형 (Date Type) 실제로 메모리를 사용하는 단위Built-in Data Type : 사용 빈도가 높은 자료형을 예약어로 제공
User-defined Data Type : 사용자가 만들어서 사용할 수 있는 문법 제공
정수형 자료형 : c언어 프로그램에서 정수 값을 메모리에 저장하기 위해 사용하는 자료형
실수형 자료형 : c언어 프로그램에서 실수 값을 메모리에 저장하기 위해 사용하는 자료형
정수를 표현하는 자료형 char(character)
>>signed char : 부호가 있는 1바이트 저장공간 (1바이트 메모리)
signed char temperature; temperature = -2; //영하 2도를 temperature변수에 저장함
*우리 주변에 있는 정보데이터를 어떤 크기에 담는 것이 적절한지 고민할 필요가 있다.
위 '온도'는 '영상과 영상라는 범위'가 존재하기에 signed char로 정보를 담아도 된다.
>>unsigned char : 부호가 없는 1바이트 저장공간 (0~255까지)
unsigned char age; age = 52; //나이 52살을 age변수에 저장함.
위 나이는 0부터 200를 넘지 않음, 또한 - 가 존재하지 않음. 따라서 unsigned char에 정보를 담는다.
c언어는 1Byte라 하지 않고 왜 char라 하는가??
아스키코드란 문자를 숫자로 표현해서 나온다. 0~255까지 숫자가 문자로 모두 표현가능하다는 의미/
1바이트 안에는 모든 문자가 들어갈 수 있다.
char를 이용하면 1바이트 안에 모든 문자를 이용 가능하다는 점에서 char는 문자형을 쓰도록 만들기 위해서 이름을 character를 따서 char를 사용한다.
But, 프로그래머들이 char타입에는 문자만 해야 한다고 생각하지만,
기온이나 나이와 같은 정보도 가능하다.! 작은 점수, 데이터의 숫자 입력도 가능하다!
의도는 문자를 활용하는 자료형으로 쓰기 위해 char를 만들었다.
>>signed short int : 부호가 있는 2바이트 저장 공간 (-32,768 ~ 32,767) integer정수
signed short dday; dday = -20; //D-day가 -20일 남았다고 dday변수에 저장함.
1년 365일 > 10년 3650일 > 100년 36500일정도
dday값을 정할 때 signed short를 사용하면 충분히 저장가능하다.
>>unsigned short int : 부호가 없는 2바이트 저장공간 (0 ~ 65,535)
unsigned short int seconds; seconds = 35000; //3aks 5000초를 second 변수에 저장함.
10시간 이내의 값을 초단위로 사용한다면 1시간 3600초 10시간 36000초는 signed short int 값을 초과!
unsigned short int 는 65,535개의 숫자를 저장할 수 있다.
>>signed long int : 부호가 있는 4바이트 저장 공간 (-2,147,483,648 ~ 2,147,483,647) -21억~ 21억정도
signed long int money; money = 70000000; //700만원을 money변수에 저장함
돈을 버는 경우와 쓰는 경우를 음수와 양수 모두 사용했음.
65,535이상의 범위이상을 넘어설 경우가 높다 그러므로 signed long int를 사용.
>>unsigned long int : 부호가 없는 4바이트 저장공간 (0 ~ 4,294,967,295)
unsigned long int time_seconds; //1970년 1월 1일부터 현재까지 시간을 초단위로 환산한 다음 time_seconds변수에 저장함. time_seconds = 145310624;
이 이상의 범위도 존재함 short short / long long
정수 자료형 표로 정리!(빨간 표시가 주로 사용되는 형태)
자료형 크기 범위 생략 char
signed char1바이트, 8비트 -128 ~ 127 signed 생략가능 unsigned char 0 ~ 255 short
short int2바이트, 16비트 -32,768 ~ 32,767 int 생략가능 unsigned short
unsigned short int0 ~ 65,535 int 생략가능 int
signed int4바이트, 32비트 - 2,147,483,648 ~ 2,147,483,647 unsinged
unsigned int0 ~ 4,294,967,295 int 생략가능 long
long int
signed long
signed long int- 2,147,483,648 ~ 2,147,483,647 int 생략가능 unsigned long
unsigned long int0 ~ 4,294,967,295 int 생략가능 long long
long long int
signed long long
signed long long int8바이트 64비트 –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 int 생략가능 unsigned long long
unsigned long long int0 ~ 18,446,744,073,709,551,615 int 생략가능 정수형 자료형 범위. 내가 500~600이라는 값을 원한다면 어떤가요???
unsigned short int이라고 생각할 수 있다.하지만 500을 뺀다면 unsigned char로도 충분할 수 있다. 그러면 메모리를 최적화하여 사용할 수 있다!
2바이트 >> 1바이트범위를 보고 어떤 자료형을 사용할지 고민하는 것이 더 발전적인 생각입니다!!!
>> 크기가 표시된 정수 자료형도 있다!!! (https://dojang.io/mod/page/view.php?id=35)
#include <stdio.h> #include <stdint.h> // 크기별로 정수 자료형이 정의된 헤더 파일 int main() { int8_t num1 = -128; // 8비트(1바이트) 크기의 부호 있는 정수형 변수 선언 int16_t num2 = 32767; // 16비트(2바이트) 크기의 부호 있는 정수형 변수 선언 int32_t num3 = 2147483647; // 32비트(4바이트) 크기의 부호 있는 정수형 변수 선언 int64_t num4 = 9223372036854775807; // 64비트(8바이트) 크기의 부호 있는 정수형 변수 선언 // int8_t, int16_t, int32_t는 %d로 출력하고 int64_t는 %lld로 출력 printf("%d %d %d %lld\n", num1, num2, num3, num4); // -128 32767 2147483647 9223372036854775807 uint8_t num5 = 255; // 8비트(1바이트) 크기의 부호 없는 정수형 변수 선언 uint16_t num6 = 65535; // 16비트(2바이트) 크기의 부호 없는 정수형 변수 선언 uint32_t num7 = 4294967295; // 32비트(4바이트) 크기의 부호 없는 정수형 변수 선언 uint64_t num8 = 18446744073709551615; // 64비트(8바이트) 크기의 부호 없는 정수형 변수 선언 // uint8_t, uint16_t, uint32_t는 %u로 출력하고 uint64_t는 %llu로 출력 printf("%u %u %u %llu\n", num5, num6, num7, num8); // 255 65535 4294967295 18446744073709551615 return 0; }
실수를 표현하는 자료형.
부동소수점 : 실수를 표현할 때 소수점의 위치를 고정하지 않고, 소수점의 위치를 나타내는 수를 따로 작성하는 방식이 부동소수점(floating - point)표현방식이다.
C언어는 실수를 저장하기 위해 4바이트와 8바이트 자료형을 제공한다.
3.123567 x 10^2
고정소수점
일정한 위치에 소수점의 위치를 고정하여 숫자를 나열하는 방법
53.8 >>>> 000538000
123.45 >>>> 001234500
>>따로 심화해서 알아보자 실수형 자료형!.
실수의 처리는 보조 수치 처리가 따로 되기 떄문에 속도가 떨어집니다. 굉장히 많이
가능한 실수를 피하는 것이 좋다!
float 0.7 저장을 하면 0.69999fh 저장된다. 속도는 높지만 정확도가 떨어진다.double 을 사용하는 것이 정확도가 더 높다!
'프로그래밍언어 > c언어' 카테고리의 다른 글
내림, 올림, 반올림 함수 ceil, floor, round함수. (0) 2022.03.13 자료형의 확장과 축소. (0) 2022.03.07 전달 인자(argument) 와 매개변수(parameter) (0) 2022.02.17 2. c언어로 만드는 첫 번째 프로그램. (0) 2022.01.22 c언어 기초 공부(feat. Do it ! c언어 입문) 1. 프로그램과 C언어 (0) 2022.01.22 다음글이 없습니다.이전글이 없습니다.댓글