c语言类型
1、内置类型:char short int long float double
2、自定义类型(构造类型)
数组类型 int arr[10] char arr[10]
结构体类型struct
枚举类型enum
联合类型union
指针类型 intpi charpn
空类型 void 表示空类型(无类型) 通常应用于函数的返回类型、函数的参数、指针类型
类型的意义:
1、 使用这个类型开辟内存空间的大小(大小决定了使用范围。
2、 如何看待内存空间的视角。
整型在内存中的存储
有符号数:1、负数原反补不同2、正数原反补相同
无符号数:原反补相同
原码转换到补码的过程:负数–原码(直接按照正负,原码的符号位不变,其它位按位取反)-反码(反码+1)-补码
补充:对于整形来说:数据存放内存中其实存放的是补码
无符号char范围:0-255 有符号char范围:-128-127
char short int long 有符号范围查limits.h float double 有符号范围查float.h
大小端介绍
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中
举例:0x11223344 存储为11223344是大端模式,存储为44332211是小端模式。
出现大小端的原因:寄存器宽度大于一个字节,如何将这些字节安排,或者说是按照什么顺序排列。
浮点型在内存中的存储
根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:
(-1)^S * M * 2^E
(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。
M表示有效数字,大于等于1,小于2。
2^E表示指数位
然后,指数E从内存中取出还可以再分成三种情况:
1、E不全为0或不全为1
E不论为正负,加上127再表示出来
2、E全为0
这时候的数无限接近于0
3、E全为1
这时候的数无穷大或无穷小
举例:
单精度符点型5.5打印成整型步骤:
101.1
(-1)^0 1.011 2^2
S=0
M=1.011
E=2
0 10000001 01100000000000000000000
其中10000001=129=2+127=E+127 E保存时加127