컴퓨터에 데이터를 저장하고 2진수, 8진수, 16진수 도입


머리말

이 기사에서는 2진수, 8진수, 16진수를 포함한 다양한 진법과 데이터가 메모리에 저장되는 방법을 소개합니다.

1. 바이너리:

이진수는 실제로 2보다 작은 한 자리 숫자입니다(예: 01111은 십진수로 15를 나타냄). 그러면 어떻게 얻었습니까? 예:
이진수: 0+1 = 1 +1= 10 +1= 11 +1= 100 , 여기서 10, 11 및 100은 10, 11, 100 대신 1 0, 1 1, 1 0 0으로 별도로 읽어야 합니다. ;
십진법: 0+1 = 1 +1= 2 +1= 3 +1= 4 ;
법칙은 이미 나타났습니다. 사실 이진법은 십진법과 동일하고 십진법은 십진법 1이며 이진법은 이진수 1입니다.

2. 8진수:

8진수는 8진수 1을 충족하는 것입니다
. 예: 8
진수: 0+3 = 3 +3= 6 +1= 7 +1= 10 ;
10진수: 0+3 = 3 + 3 = 6 +1= 7 +1= 8 ;

3. 16진수:

16진수 체계도 비슷해서 16진수 1의 경우에는 아라비아 숫자에 10, 11을 나타내는 단일 숫자가 없습니다... 그래서 16진수에서는 A를 사용하여 10을 나타내고, B를 사용하여 11을 나타내고, C를 사용 하여 12 나타 냅니다 . D는 13 , E는 14 , F는 15를 의미합니다. 예:
16진수: 7, 8, 9, A, B, C, D, E, F, 10
진수: 7, 8, 9, 10, 11, 12, 13, 14 , 15;

4.X 밑수는 십진수로 변환됩니다.

10진수: 1234
1 * 10 3 + 2 * 10 2 + 3 * 10 1 + 4 * 10 0 = 1234
2 진수: 010011
1 * 2 4 + 1 * 2 1 + 1 * 2 0 = 19
8 진수: 3741
3 * 8 3 + 7 * 8 2 + 4 * 8 1 + 1 * 8 0 = 2017
16진수: 2BE
2 * 16 2 + B * 16 1 + E * 16 0 = 702


1. 컴퓨터의 정수 저장:

정수 유형에는 char , int , long , short 가 포함됩니다(char 유형은 메모리에 ASCII 코드로 저장되므로 정수 유형으로도 간주됩니다).
정수는 메모리에 2의 보수 형태로 저장 됩니다.
예시 : Unsigned int 10
원본코드 : 000000000000000000000000001010
보완코드 : 11111111111111111111111111110110
unsigned int형이므로 32비트이고, 메모리에 있는 데이터 10을 111111111로 표현한다. 111111111 11111111111110110 형식으로 저장됩니다.
Signed int 10
원본 코드: 000000000000000000000000001010
보완: 0111111111111111111111111110110
signed int -10
원본 코드: 1000000000000000000000000001010
보완: 1111111111111111111111111111110110

둘째, 데이터에 부동 소수점 숫자를 저장합니다.

부동 소수점 유형에는 다음이 포함됩니다. float, double
부동 소수점 숫자는 과학적 표기법으로 저장되므로 부동 소수점 유형의 저장은 정수와 매우 다릅니다.

#include <stdio.h>
 
int main()
{
    
    
    int n = 9;
    float* p = &n;
    printf("%d",*p);
    return 0;
}
输出结果是 0
#include <stdio.h>
 
int main()
{
    
    
    float n = 9;
    int* p = &n;
    printf("%d",*p);
    return 0;
}
输出结果是 1091567616

부동 소수점 숫자의 저장 계산 공식은 다음과 같습니다.
(-1)^S * M * 2^E
64비트 시스템의 경우
여기에 이미지 설명을 삽입하세요
32비트 시스템의 경우
사진 설명을 추가해주세요
S는 부호 비트, E는 지수, 나머지 M은 유효한 번호.
부동소수점 숫자는 과학적 표기법으로 저장되기 때문에 M에 있는 숫자의 범위는 0<M<10 이고, 컴퓨터 메모리는 이진수로 저장되기 때문에 0<M<2 이다 .

IEEE 754에서는 M을 컴퓨터 내부에 저장할 때 기본적으로 이 숫자의 첫 자리는 항상 1이므로 버려도 되고 뒷부분만 저장하도록 규정하고 있다. 예를 들어 1.01을 저장하면 01만 저장됩니다.

E는 부호 없는 정수이지만 과학 표기법의 지수로 인해 2 -2 와 같이 음수가 나타날 수 있습니다 . 따라서 IEEE 754에서는 메모리에 저장될 때 E의 실제 값에 중간 숫자를 더해야 한다고 규정하고 있는데, 8비트 E의 경우 중간 숫자는 127, 11비트 E의 경우 중간 숫자는 1023이다. 예를 들어 2^10의 E는 10이므로 32비트 부동 소수점 숫자로 저장할 때는 10+127=137, 즉 10001001로 저장해야 합니다.

Supongo que te gusta

Origin blog.csdn.net/2302_76339343/article/details/130993446
Recomendado
Clasificación