深入了解数据在内存中的存储

目录

一、数据类型的分类

基本类型

整数类型

浮点型

构造类型

结构体类型

枚举类型

联合类型

指针类型

空类型

二、整数在内存中的存储

存储方法

原码、反码、补码

原码

反码

补码

三、浮点数在内存中的存储

浮点数的类型

浮点数的存储规则

二进制浮点数的表现形式


一、数据类型的分类

基本类型

整数类型

char
unsigned char
signed char
short
unsigned short [int]
signed short [int]
int
unsigned int
signed int
long
unsigned long [int]
signed long [int]

浮点型

float
double

构造类型

数组类型

char arr1[10];
int arr2[10];
char arr3[10]="hello";
double arr4[]={1000.0,2.0,3.4};

结构体类型

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在学习小组
    float score;  //成绩
};

枚举类型

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};

联合类型

union Data { int i; double x; char str[16]; };

指针类型

int *pi;
char *pc;
float* pf;
void* pv;

空类型

int *a;
void *p;
p=a;

二、整数在内存中的存储

存储方法

整型在内存中是以补码的形式存储的

符号位都用0表示正,用1表示负(整数的原码、反码、补码都相同)

原码、反码、补码

原码

整数的二进制

反码

符号位不变,其他位按位取反

补码

反码+1

三、浮点数在内存中的存储

浮点数的类型

float
double
long double

浮点数的存储规则

二进制浮点数的表现形式

(-)^S*M*2^E

(-1)^S表示符号数,当S=0,V为整数;当S=1,V为负数

M表示有效数字,大于等于1,小于2

对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。

对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。

猜你喜欢

转载自blog.csdn.net/weixin_51799303/article/details/128560395