자료형(Data Type)
가상 메모리(실제 저장되는 위치는 실제 메모리)에 할당된 공간을 일정 크기로 구분해서 특정한 의미를 부여한 뒤 해석
실행 환경(런타임)에서 값이라고 인정되는 정보가 있는 정보 저장소의 영역
특정 유형을 가진 것으로 해석되는 객체의 정확한 의미
정적 메모리 할당(Static Memory Allocation)
자료형의 크기는 컴파일 타임 때 적용되지만 실제로 할당되는 부분은 런타임 때
소스코드에 자료형 기재 - 컴파일러에의해 기계어로 컴파일 - 프로그램 실행(런타임) 자료형 메모리 할당
메모리 할당을 하는 이유
가상메모리는 운영체제, 여러 프로그램들이 공동으로 사용하는 공동 영역임
운영체제가 각 프로그램끼리 영역을 침범하지 않도록 관리 해줌
(영역이 침범되면 프로그램이 멀쩡하지 못할거임)
메모리 할당
프로그램을 실행하려면 프로그램에서 사용하는 데이터를 가상 메모리에 저장함
이 때 아무곳에나 데이터를 저장하면 여러 위험요소가 있기에 특정한 영역에 지정해 주는 것
할당된 공간은 해당 프로그램 만의 영역임
프로그램 끼리 영역을 교차시킬 수 도있는데 잘못하면 데드락에 빠지게 된다
자료형의 의미
자료형의 크기는 같을 수 있지만 해석하는 방법은 서로 다를 수 있다.
쓰레기 값, 매직 디버그 값
쓰레기 값(Garbage Value)
이전에 종료되었던 프로그램에서 사용하던 값을 의미
쓰레기값 발생 원인
가상메모리 공간은 공동으로 사용하는 곳이기 때문에 이전에 실행되었던 프로그램이 종료되면 해당위치에 다른 프로그램이 메모리 공간을 할당받을 수 있다
쓰레기 값이 들어있는 메모리에 매직 디버그 값(Magic Debug Value)을 넣어서 초기화를 해주는 IDE나 컴파일러도 있다
(초기화 개념, 의미없는 값들을 정리해줌)
정수 자료형
1. 부호가 있는(Signed) 정수 자료형 - 음수, 양수 구분
2. 부호가 없는(Unsigned) 정수 자료형 - 양수만

부호가 있는 경우 MSB를 부호 비트로 사용하기 때문에 실질적으로 수를 표현할 수있는 비트수는 7비트임
(표현범위가 좁음)
-2^(n-1) ~ (2^(n-1))-1
부호가 없는 경우 MSB도 수를 표현하는 비트로 사용하기에 8비트를 사용하여 수를 표현한다
(표현범위가 넓음)
0 ~ (2^n)-1
부호가 있는 정수는 자료형을 형식 지정자(Type Specifiers)라는 예약어(KeyWord)중 signed을 사용하여 표현
부호가 없는 정수는 unsigned를 사용하여 표현 함
정수 자료형의 종류

Int 자료형의 경우는 크기가 일정하지 않다
컴퓨터 시스템에 따라서 크기가 바뀌는 자료형
실수 자료형
float : 단정밀도(Single Precision) 32비트

double : 배정밀도(Double Precision) 64비트

단정도(Sigle Precision) 표현 방식

부호(Signed)
0 : 양수를 의미
1 : 음수를 의미
가장 왼쪽 비트(MSB_Most Significant Bit)를 보고 판단 가능
지수(Exponent)
단정도 방식에서 지수는 8비트로 표현
정밀도 결정
Ex)
1_00001010_00000000000000000000000
지수는 10
지수표현 2^e (식에서 처럼 e로 표현 가능)
바이어스 지수(Biased Exponent)
실수끼리 연산을 할 때 크기가 더 작은 실수의 가수와 지수를 조정해야하는 이슈
실제 지수값에 0111_1111(==127)을 더해 모두 양수로 변환
(IEEE754에서는 +127로 고정)
가수(Mantissa, Significant)
실질적 데이터를 의미(의미 있는 수를 담당)
표현 가능한 수의 범위 결정
정규화(normalized mantissa)를 통해 수를 표현
가수를 1.bbb...b 형식으로 표현하도록 지수 조정
가수 표현시 bbb...b만 표현
1은 늘 존재하니 저장할 필요가 없음(숫자 0인 경우 가수를 모두 0으로 채움)
Ex)
15.652 단정도 방식 표현
15.625 이진수 표현 -> 1111.101
가수의 정규화
1.1111_01 * 2^3 (2^3 하는 이유 - 소수점 위치 조정)
지수(Exponent)
지수는 가수(base) 제곱값 - 3
바이어스 지수 계산 +127
130 이진법 표현 -> 1000_0010
가수(Mantissa)
가수 1.bbb에서 1이하의 것들을 의미
1111_0100_0000_0000_0000_000
111_1010_0000_0000_0000_0000
[0]_[1000_0010]_[1111_0100_0000_0000_000]
[0]_[1000_0010]_[111_1010_0000_0000_0000_0000]
실수 자료형의 종류

E+38 == E의 38제곱
float - Floating(부동 소수점 수, 단정도)
double - Double Precision(배정도)
long double - double 이상의 범위를 표현할 때 사용
실수는 signed와 unsigned를 키워드를 사용할 수 없음
'공부 > C' 카테고리의 다른 글
C_식별자(Identifier) (0) | 2023.04.01 |
---|---|
C_변수(Variable), 상수(Constant) (0) | 2023.03.20 |
C_이스케이프 시퀀스(Escape Sequences) (0) | 2023.03.17 |
C_주석(Comments) (0) | 2023.03.17 |
C_Main에 대해서 (0) | 2023.03.16 |