目录
1.数据的类型介绍
2.整型在内存当中的存储
3.浮点型在内存当中的存储
1.数据的类型介绍:
1.1基本内置类型:
char 字符型 short 短整形 int 整型
long 长整形 long long 更长整型
float 单精度浮点数 double 双精度浮点数
1.2 类型的基本分类:
包括:整形家族,浮点数家族,构造类型,指针类型,空类型;
1.2.1 整形家族:
char : unsigned char signed char
short :unsigned short signed short
long : unsigned long signed long
int : unsigned int signed int
1.2.2 浮点型家族:
float double
1.2.3 构造类型:
1.数组类型; 2.结构体类型; 3.枚举类型; 4.联合体类型
1.2.4 空类型:
void () (通常用于函数的返回类型,函数的参数以及指针的类型)
1.2.5 指针类型:
比如:int* char* float* void*
2.整形在数组当中的存储:
2.1 原码,反码,补码的认识:
用来表示整数在计算机当中的表示的二进制方法;三种当中都包括符号位和数值位。
2.2 正数的原码,反码,补码都相同;
2.3 负数就不同与整数的表示:
原码:符号位是1 其余位按照数值转化成二进制就是了;
反码:符号位不变,其他位都按位取反,1变0,0变1,就得到了;
补码:补码是在反码的基础上再加上个1便得到了;
2.4 但对于整型来说,将数据存放在内存当中就是存放的补码。
2.4.1这时候就要问为什么将数据存放在内存当中是补码形式:
(1)使用补码可以将数值的符号位以及数值位都统一处理
例如:1-1=1+(-1)如果采用原码(只写四位):0001+1001=1010=-2;补码:0001+1110=10000;由于32位的机器只能存放32位那么1就去除了,就得到0;
(2)由于cpu只有加法器,补码和原码相互转换,运算的过程是相同的不需要额外的硬件设备
cpu的加法可以解决减法,除法,乘法运算(除/乘就是多加多减的过程);
2.5大小端的介绍:
2.5.1什么是大小端:
(1)大端存储:数据的低位存放在内存的高地址当中,而数据的高位存放在内存的低地址内;
(2)小段存储:数据的低位存放在内存的低地址当中,数据的高位则存放在内存的高地址中;
2.6 为什么要有大小端之分:
每个地址单元都对应一个字节,对于字节要如何安排就存在大端,小段的问题;
例如:short x=0x1122;地址是0x0010;
3.浮点型在内存中的储存;
浮点型家族:float double long double
3.1浮点数存储规则
(1)32位浮点数:最高1位是符号位s;8位是指数E;23位是有效数字M;
(2)64位浮点数:最高1位是符号位;11位是指数位E;52位是有效数字M;
(3) 对M,E,S详细讲解:
M:有效数字位:1<M<2 ;可以写成1.xxxxxxx ; xxxxx为小数部分;
E:就有三种情况:
(1)E为无符号整数:那么对于8位:取值范围:0~255;对于11位:取值范围是:0~2047;
E也是可以出现负数的:那么就有一个中间值来分界负数和正数:8位:127; 32位:1023;
(2)E不全为0或者不全为1:
将E位的计算值减去127得到真实值,再在有效数字M前第一位+1;
例如:0.5:二进制位:0.1;1.0^(-1) ;那么阶码部分就是-1+127=126,126的二进制为:01111110;所以M就是去掉1的00000000000000000000000(23);
(3)E全为0:
有效数字位就不需要加1;就是0.xxxxxx;
(4)E全为1:
如果M全为0,表示(+、-)无穷大;
S:符号位;(-1)^0=1; (-1)^1=-1;