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
출처
728x90
반응형
'개발일지 > 기타' 카테고리의 다른 글
[Install shield] 실행 파일 없는 프로젝트 인스톨 파일 만들기 (0) | 2022.04.29 |
---|---|
[JAVA/JQuery/JS] 중요 정보 암호화 하여 전송하기/복호화하여 저장하기 (0) | 2022.04.28 |
[web hacking] 프록시 도구(Burp Suite)를 이용한 웹 해킹 및 대응 (0) | 2022.04.28 |
[Laravel] 라라벨 디버그 바, 디버그 페이지 정리 (0) | 2022.04.20 |
[Laravel] 라라벨 설치 방법(원하는 버전으로 설치하기) (0) | 2022.04.18 |