хранилище данных

1. Хранение формы в памяти

Исходный код, обратный код, дополнительный код

Целые числа хранятся в памяти в форме дополнения до двух.
Для целых чисел со знаком старший бит двоичного кода представляет бит знака, 0 представляет собой положительное число, а 1 представляет
преобразование между исходным кодом, обратным кодом и дополнительным кодом отрицательного числа.
положительное число:
Оригинал, реверс и дополнение одинаковы.
отрицательное целое число:
Знаковый бит исходного кода остается неизменным, остальные биты инвертируются для получения обратного кода, а
обратный код добавляется к 1, чтобы стать дополнительным кодом.

2. Преобразование типов

1. Неявное преобразование типов

Все, что ниже intтипа, должно быть преобразовано в тип при выполнении операции int. Это называется целочисленным продвижением
. Типы, которые необходимо преобразовать.
char
unsigned char
signed char
short
unsigned short

В стандарте языка C не предусмотреноугольЯвляется ли это целым числом со знаком или без знака, полностью зависит от вашего компилятора
, когдаугольКогда используется целочисленный тип со знаком, диапазон представляемого значения составляет ==-128~127==
. Когда это целочисленный тип без знака, диапазон представляемого значения составляет0~255
это знакугольКруг формируется между -128~127, когда 127+1 становится -128

короткаяявляется подписанным типом, он инеподписанный короткийПосмотрите на код ниже , чтобы
помочь вам понять

int main()
{
    
    
	char a = 0xb2;
	整型提升为0xffffffb2
	short b = 0xb200;
	整型提升为0xffffb200
	int c = 0xb2000000;
	不需要提升
	if (a == 0xb2)
		printf("a\n");
	if (b == 0xb200)
		printf("b\n");
	if (c == 0xb2000000)
		printf("c\n");
	return 0;
}

вставьте сюда описание изображения

2. Арифметическое преобразование

Когда несколько чисел обрабатываются вместе, если типы этих чисел различны, их необходимо преобразовать в один и тот же тип для операции, что является обычным арифметическим преобразованием .
Эти типы отсортированы от высокого к низкому
long double
double
float
unsigned long int
long int
unsigned int
int

Арифметическое преобразование должно быть осмысленным. При преобразовании высокой точности в низкую некоторые данные будут потеряны.

3. Введение и оценка порядка следования байтов от старшего к младшему.

Примечание. Хранится в байтах
Хранилище с обратным порядком байтов: младшие биты данных существуют по адресувысокогде старшие биты данных хранятся по адресуНизкийХранилище
с прямым порядком байтов : младшие биты данных существуют по адресуНизкийгде старшие биты данных хранятся по адресувысокоМесто.
вставьте сюда описание изображения
Пожалуйста, запрограммируйте свою реализацию: определите, какой метод хранения используется на вашей машине.

int panduan()
{
    
    
    int i = 1;
    return *(char*)&i;
}
int main()
{
    
    
    int ret=panduan();
    if (ret == 1)
        printf("小端\n");
    else
        printf("大端\n");
    return 0;
}

4. Анализ хранения типа с плавающей запятой в памяти

Хранение в памяти типа с плавающей запятой полностью отличается от хранения целочисленного типа.Для
32-битного числа с плавающей запятой первый бит представляет бит знака (представленный S) , следующие 8 бит представляют бит экспоненты ( представлено E) , а остальные биты s представляют значащие биты (представлены M)
S: 0 для положительных чисел, -1 для отрицательных чисел .
E: экспонента плюс 127 бит = его номер хранения, и эти 8 бит представляют число без знака
M: его диапазон находится между 1 и 2. Нет необходимости сохранять 1 при сохранении и хранить число после десятичной точки,
вставьте сюда описание изображения
например :

	float i=6.5;
	二进制为110.1   1.101 *2^2
	s为0
	E为2+127=129
	M为101   后面位用0进行填充
	0 10000001 10100000000000000000000
	16进制进行表示
	0x40d00000

Давайте посмотрим на результаты работы компьютера, я
вставьте сюда описание изображения
думаю, это должно быть понятно каждому!
Здесь следует отметить несколько моментов:
1. Когда E все 0, бит экспоненты равен 1-127 (1-1023 (это 64-битный)), а значащий бит M не нужно добавлять 1, этот Число, очень близкое к ±0.
2. Когда E состоит из единиц, это очень большое число, ± бесконечность.
В дополнение к этим двум пунктам внимания, как его хранить, как выносить.
Для 64-битного типа с плавающей запятой 11 бит после знакового бита представляют бит экспоненты плюс1023, остальное аналогично описанию 32-битного типа с плавающей запятой.

Благосостояние: епископ, которого вы изучаете

Юбка пингвина:720429262

рекомендация

отblog.csdn.net/m0_60598323/article/details/123146769
рекомендация