메모리에 데이터 저장(정수에 대해 말함)

머리말: 이 글에서는 C 언어의 데이터 유형과 그것이 메모리에 저장되는 방식에 대해 설명합니다.

1. 데이터 유형 소개

C 언어의 기본 데이터 유형은 다음과 같습니다.

char 문자 데이터 유형 1바이트

짧은 짧은 정수 2바이트

int 정수 4바이트

긴 긴 정수 4/8바이트(32비트/64비트)

longlong 더 긴 정수 8바이트

float 단정밀도 부동 소수점 유형 4바이트

double 배정밀도 부동 소수점 유형 8바이트

그렇다면 왜 그렇게 많은 데이터 유형을 나누는 걸까요?

이는 서로 다른 크기의 메모리를 차지하고 이를 사용하여 다양한 유형의 변수를 정의하기 때문입니다.

코드를 작성할 때 더 큰 작업을 수행하려면 최소한의 메모리 공간을 사용해야 하며 , 이를 위해서는 프로그래밍에서 다양한 데이터 유형을 유연하게 사용해야 합니다.

위의 7개 데이터 유형에 대해 처음 5개와 마지막 2개를 두 계열 로 나눕니다 .

1. 정수족

이름에서 알 수 있듯이 정수형은 정의된 변수가 정수라는 뜻인데 여기서 char은 왜 정수형 계열에 속하는 걸까요? 정의된 문자형이 아닌가요?

실제로 문자가 메모리에 저장하는 것은 문자의 ASCII 코드값 이고 , ASCII 코드값은 정수이므로 문자형은 정수형으로 분류된다.

2. 부동 소수점 계열

부동 소수점 숫자는 우리가 일반적으로 소수라고 부르는 숫자이기도 합니다(예: 3.14159). 부동 소수점 숫자라고 불리는 이유는 소수점이 0.314159 * 10 또는 31.4159 / 10을 쓰는 것처럼 왼쪽과 오른쪽으로 부동할 수 있기 때문 입니다 . 부동 소수점 수에 대한 중요한 지식이 없기 때문에 여기서는 너무 많이 설명하지 않겠습니다.

3. 건축형태

정수 및 부동 소수점 유형 외에도 우리가 직접 정의하는 다음을 포함하는 구조적 유형이라고 하는 데이터 유형도 있습니다.

배열 유형 arr[]

구조 유형 구조체

열거형 열거형

유니온형 유니온 

4. 포인터 유형

int *pi 정수 포인터

char *pc 문자 포인터

float *pf 부동 소수점 포인터

무효 *pv 무효 포인터

5. 빈 유형

void는 빈 유형(유형 없음)을 나타냅니다.

일반적으로 함수의 반환 유형, 함수의 매개변수 및 포인터 유형에 사용됩니다.

다음에서는 정수형에 대해서만 설명하겠습니다. 마지막 4가지 유형은 이 글에서 설명의 초점이 아니므로 여기서는 단지 표시용일 뿐이며 설명을 확장하지 않겠습니다. 친구는 이해하기만 하면 됩니다.

2. 메모리에 정수 저장

컴퓨터는 이진 데이터를 처리할 수 있으며 정수 및 부동 소수점 데이터도 이진 형식으로 메모리에 저장됩니다.

정수는 2의 보수 이진 시퀀스로 메모리에 저장됩니다.

1. 원본코드, 역코드, 보완코드

정수 에는 원본 코드, 보수 코드, 보수 코드 의 세 가지 이진 형태가 있습니다 .

세 가지 표현 방법에는 모두 부호 비트값 비트가 있으며 , 부호 비트는 "0"을 사용하여 양수를 나타내고 "1"을 사용하여 음수를 나타냅니다 .

의 정수의 원코드, 역코드, 보수코드는 동일하다 .

음 의 정수의 1의 보수는 원래 코드의 부호 비트는 그대로 두고 나머지 숫자는 비트 단위로 반전한 것이며, 보수 코드는 음의 코드 +1이다.

자세한 설명은 다음과 같습니다.

 

 두 숫자가 차지하는 메모리를 개별적으로 살펴보겠습니다.

여기서 사용하는 VS 컴파일러는 바이너리를 16진수로 변환하여 메모리에 표시하는데, 위 바이너리와 반대 순서로 되어 있는 것을 발견했는데, 왜 그럴까요?

2. 빅 엔디안과 스몰 엔디안 소개

빅 엔디안과 스몰 엔디안이란 무엇입니까?

크고 작은 끝은 각각 빅엔디안 저장소리틀엔디안 저장소 입니다 .

빅엔디안 저장: 메모리의 상위 주소에 있는 데이터 의 하위 바이트에 데이터를 저장하고 , 메모리의 하위 주소에 있는 상위 바이트에 데이터를 저장합니다 .

리틀 엔디안 저장: 메모리의 상위 주소에 있는 데이터 의 상위 바이트에 데이터를 저장하고 , 메모리의 하위 주소에 있는 하위 바이트에 데이터를 저장합니다 .

세부사항은 다음과 같습니다:

이를 통해 제가 사용하는 VS 컴파일러는 little-endian 바이트 순서로 저장되어 있음을  알 수 있습니다 .

 3. 요약

정수는 가장 간단한 데이터 유형이라고 할 수 있습니다. 제가 배우고 익힌 내용에 대한 간단한 설명입니다. 부족한 점이 있으면 댓글 영역에 추가해도 됩니다. 블로거의 글이 마음에 듭니다. 돈' 하나의 버튼을 세 번 누르는 것을 잊지 마세요. 다음 호에서 만나요!

 

추천

출처blog.csdn.net/2303_78442132/article/details/132116436