A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lynn010 中级黑马   /  2015-12-27 22:53  /  681 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lynn010 于 2015-12-29 20:46 编辑

数据类型取值范围基于编译器的字长有关【单位为字节】

16位编译器
32位编译器
64位编译器(目前主流)
char
1
1
1
int
2
4
4
float
4
4
4
double
8
8
8
short
2
2
2
long
4
4
4
long long
8
8
8
void *(指针变量)
2
4
8


一、数据类型范围算法
由于苹果电脑目前都为64编译,就此仅讨论64位的数据类型范围。
1个字节=8个进制位
1、对于整数型
int占1个字节,且带符号,最高位为符号位,因此int的范围是-2^(8*4-1)到2^(8*4-1)-1即-2^31到2^31-1
unsigned int 的范围则是0到2^32


2、对于浮点型数据类型
%f    float 类型精度小数点后6位,有效数字是7位(包含小数点前数字)%f    double 类型精度小数点后6位,有效数字是15位(包含小数点前数字)

float类型有1个符号位、8个指数位、23个尾数位,但有效数位是7位
float的范围为-2^(8-1)到2^(8-1)【指数也要求有符号位,因此才能有表示小数,具体参考IEEE 754规范
精度由尾数位数决定2^23=8388608因此最多有7位有效数字,且能保证的为6位,故float精度为6~7位




double类型有1个符号位、11个指数位、52个尾数位但有效数位是15位
double的范围为-2^(11-1)到2^(11-1)【指数也要求有符号位,因此才能有表示小数,具体参考IEEE 754规范

精度由尾数位数决定2^52=4503599627370496因此最多有16位有效数字,且能保证的为15位,故double精度为15~16位


公式:
F=1.M(二进制)   
在单精度时:   V=(-1)^s*2^(E-127)*F   
在双精度时:   V=(-1)^s*2^(E-1023)*F

http://blog.csdn.net/linmx000/article/details/50414395

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马