C/C++中的int类型、float类型、double类型

1、int 和 float
现在大部分常用的Visual Studio编译器中,int型和float都占用4字节(32 bits)内存。
但区别在于:
int型数据转换为二进制存储的格式为:
最高位是符号位sign,剩下的31位表示实数值real_number。
因此,int = sign * real_number
float型数据在转换为二进制存储格式是:
最高位是符号位sign,接下来八位是指数位exponent,其余23位是尾数位mantissa。
因此,float = sign * mantissa * 2 ^ exponent
其中,8 bits的指数位exponent不包含符号位的概念,但是指数也是有正负之分的,这是因为编译器将8 bits的指数位所对应的十进制数0~256自动映射到-127~+128的范围,既由指数位所表示的数据exponent再减去127才是float类型数据真正的指数值。
尾数mantissa只表示十进制转换为二进制数后,由科学计数法表示的二进制数的小数部分。
因此,如果一个十进制数转换为二进制的时候,所占存储位数小于23 bits则可以用int和float等效的表示这个数;但是如果一个十进制数转换为二进数之后,所占存储位置大于23 bits而小于32 bits的时候,则用int和float不能再总是等效的表示这个数距;对于更大的十进制数据,既转换为二进制的时候存储位置大于32 bits的时候,只能有float类型来“近似”的表示,而int类型则已经无法表示了。

2、float 和 double
float类型占据4字节(32 bits)位置,最高1 bit符号位,紧跟8 bits指数位,剩下的23 bits尾数位。
double类型占8字节(64 bits)位置,最高1 bit符号位,紧跟11 bits指数位, 余下的52 bits尾数位。

参考链接:http://blog.csdn.net/bing_ka/article/details/52024449

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值