目录
一、数据类型介
(一)类型归类
整型类
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//双精度浮点类型
(二)类型意义
1.确定所能访问的空间的大小
2.如何看待内存空间的视角
二、大小端字节序
(一)字节序概念:
CPU对内存中的数据以字节序为单位进行存取的顺序
内存有高低位之分,一个数据的二进制也有高低位之分
(二)分类
大端:低地址存低位
小端:低地址存高位
主机字节序取决于CPU架构:小端--X86;大端--MIPS;(大小端之分会在网络通信的时候有影响)
(三)对数据的影响
针对存储单元大于一个字节的数据类型:short、int、long、float、double
char a[10]字符数组不受影响
int a[10]每个元素受影响,整体数组不受影响
例:
int a = 0x01020304;//0x表示十六进制,转成二进制int a = 0001 0002 0003 0004
大端:
01 02 03 04 小端:
04 03 02 01
三、整型存储方式
(一)整型存储
在内存中数据以二进制形式存储
1—— 0000 0001
-1—— 1000 0001
(二)二进制存储
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位
三种表示方法各不相同。
原码:直接将二进制按照正负数的形式翻译成二进制就可以。
反码:将原码的符号位不变,其他位依次按位取反就可以得到了。
补码:反码+1就得到补码。
正数的原、反、补码都相同。
对于整型来说:数据存放内存中其实存放的是补码。
四、浮点型存储方式
(一)小数何如转换为二进制:乘二取整法
例:0.25-> 01
(二)存储形式
例:
5.25-> 101.01-> 1.0101*2^2
0.25-> 0.01-> 1.0*2^-2
IEEE754标准文档规定:浮点数的表示分为三个部分:
1.S-符号位,占1个比特位
2.E-阶码位(指数位),在32位中占8个比特,在64位中占11个比特位
3.M-尾数,在32位中占23个比特位,在64位中占52个比特位
ps:由于指数位可能会出现负数,但是指数域是无符号的,无法表示负数。
故而采用指数基数:127 (真正的指数位存储的数据是实际指数值+127)
专业术语:数字的移码-1;
移码:正数的移码就是符号位取反
ps:因为浮点存储在进行浮点移动的时候,总会移动到第一个1的后边:1.XXXXX
采用这种方式之后,因为尾数部分,第一个比特位总是存储1,如果把这个1忽略掉,采用这种规则,用的时候再加上,1就不用存储了,节省一个比特位。
例:
5.25真的存储:
0 10000001 01010000 00000000 0000000
两种特殊情况:
E为全0:此时真实指数值是1-127=-126,M表示真实值(整数部分是0),通常用于表示正负0
E为全1: 此时真实指数值是255-127=128,M为全0时表示正负无穷大