содержание
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