C语言中的基本数据类型
字符类型 char 1字节 [-128,127]
无符号字符类型 unsigned char 1字节 [0,255]
短整数类型 short 2字节 [-32768,32767]
unsigned short [0,65533]
short int
unsigned short int
整数类型 int 4字节 [-2^31,2^31 -1]
unsigned int [0,2^32 -1]
长整数类型 long int 4字节/8字节
long unsigned long int
长长整数类型 long long int 8字节
单精度浮点类型 float 4字节 +-3.4*10^38
双精度浮点类型 double 8字节 +-1.78*10^308
同样是4个字节,为什么int和float表示的范围却有这么大的差异?
int -2147483648,2147483647
float +-3.4*10^38
int类型简单介绍下
32位无符号整数 , 其表示范围是2的32次方,最大整数为 2的32次方-1
有符号数则要去除一个符号位,其表示范围是[-2^31,2^31-1]
有符号数则要去除一个符号位,正数最大为2的31次方-1 , 负数最小为负 2的31次方
而float类型组成是由1个符号位 8个指数位 23个尾数位 1+8+23=32
0|1 8个指数位 -128,127 在这里计算一下float的取值是如何得出的
最大值0 127 .11111111...11111
先说小数部分,因为有23个小数位,所以最大的情况为23个1(0.1111111....1111111),即为1-2^-23
但是IEEE 754标准规定了一个隐含的1(用于节省1个位的空间),不在这23位中,所以整数部分有个1,
指数部分有8位,最大情况为0111 1111即127,所以float的最大表示为(1+(1-2^-23))*2^127,
化简得2^128 - 2^14
最小值 1 127 .11111...1111111 同理可得了
精度范围: 小数点后 6-7位 前5位肯定是精确的