본문 바로가기
개발일지/기타

자료형(int, float, long) 메모리 구조

by 쫌눈 2025. 4. 4.
728x90
반응형

C 언어에서 int, float, long 자료형이 메모리에 저장되는 방식은 각 자료형의 비트 구조에 따라 다르다.

각 자료형이 메모리에 저장되는 세부 구조는 아래와 같다.

int (정수형)

크기 4바이트(32비트)
구조 1비트: 부호 비트(Sign Bit) (0: 양수, 1: 음수)
31비트: 값(Value Bits)
저장 방식 2의 보수법(Two's Complement)을 사용하여 음수를 표현
2의 보수법
어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수.
2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다.
주어진 이진수의 모든 자리의 숫자를 반전(0을 1로, 1을 0으로)시킨 뒤 여기에 1을 더하면 2의 보수를 얻을 수 있다.
 
예시
int a = -5;

부호 비트: 1 (음수)
값: 11111111 11111111 11111111 11111011 (2의 보수 표현)
 

float (실수형)

크기 4바이트(32비트)
구조 (IEEE 754 표준) 1비트: 부호 비트(Sign Bit) (0: 양수, 1: 음수)
8비트: 지수부(Exponent) (오프셋 바이너리 방식, Bias = 127)
23비트: 가수부(Mantissa) (정규화된 소수점 이하 값)
저장 방식 실수는 $$ (-1)^{\text{Sign}} \times (1.Mantissa) \times 2^{\text{Exponent} - \text{Bias}} $$ 로 계산된다.
예시
부호 비트: 1 (음수)
지수: 10000001 (129 = 지수 + Bias)
가수: 01110000000000000000000
 
 

long (정수형)

크기 4바이트(32비트) 또는 8바이트(64비트)
구조 1비트: 부호 비트(Sign Bit)
나머지 비트: 값(Value Bits)
저장 방식 2의 보수법(Two's Complement)을 사용하여 음수를 표현

 

메모리 내 바이트 순서

  • C 언어에서는 데이터가 메모리에 저장될 때, CPU의 아키텍처에 따라 다음 두 가지 방식 중 하나로 저장된다:
    • 빅 엔디안(Big Endian): 가장 중요한 바이트(MSB)가 가장 낮은 주소에 저장
    • 리틀 엔디안(Little Endian): 가장 중요한 바이트(MSB)가 가장 높은 주소에 저장

리틀 엔디안 시스템에 저장되는 메모리값은 다음과 같다.

 
int x = 0x12345678;

주소   값
0x00   78
0x01   56
0x02   34
0x03   12

 

출처

https://www.youtube.com/watch?v=HjCAnHXwnYw&t=56s

728x90
반응형