目录
空类型:void表示无类型(通常用于函数的返回类型,参数,指针类型)不需要任何返回
前言
在这篇文章中,让我们更加理解数据在内存中的存储,如数据类型介绍,数据在内存中存储的方式,大小端字节的判断,浮点型在内存中的存储解析;希望会对大家有所帮助!!!!!
一。数据类型的归类
整形类型 (有符号)
浮点数类型
构造类型(自定义类型)
指针类型
空类型
- 整形类型中有:int ,short,long,long long ,当然还有一个char型,因为字符存储的时候存储的是ASCLL码值,是整形,归类为整形的家族当中
- 浮点型类型中有:float,double,long double型
- 自定义类型:数组类型,结构体类型:struct,枚举类型:enum,联合类型:union.就是可以自己定义。
- 指针类型:int*p等等,还有结构体的指针被称为指针类型
-
空类型:void表示无类型(通常用于函数的返回类型,参数,指针类型)不需要任何返回
二。整形在内存存储
原码,反码,补码
创建一个变量就要在内存中开辟一个空间,空间的大小由类型决定,
比如说整形类型
创建变量a,a向内存申请4字节存放数据
int a=10 //4字节32比特位-----00000000000000000000000000001010
**正的原码=反码=补码
int b=-10 //-------------原码-----10000000000000000000000000001010
原码取反 -------反码-----111111111111111111111111111111110101
反码加1 -----补码-----111111111111111111111111111111110110
整形类型的二进制类型表现形式有:原码。反码。补码。
在位操作符的运算中,我们用的就是补码,这3码的表现形式是如下
符号位 (0表示正,1表示负) | 数值位 |
其中,正数的原码,反码,补码都一样
但是,负数的反码:符号位不变,数值为取反
补码:反码+1即可
对于整形来说,内存中存放de是补码。为啥?
因为用补码可以将符号位和数值位统一处理,同时加法减法也可以统一处理(cpu只有加法器,减法可有加法转换)此外补码和原码相互转换,运算过程不需要额外的硬件电路(如下)
//计算
1+(-1)
00000000000000000000000000000001 --> 1的补码
11111111111111111111111111111111 --> -1的补码
00000000000000000000000000000000
//原码计算是错误的
00000000000000000000000000000001
10000000000000000000000000000001
10000000000000000000000000000010---> -2
大小端字节序存储
在vs中,为了方便,便用16进制表示如:-10的补码111111111111111111111111111111110110
四个为一组对应16进制的一个数,看下图
//
可以看出,补码是倒着存储的///为啥?看下面
1.字节序:是以字节为单位,讨论存储顺序的
小端字节序(规定)