Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79071
  • 博文数量: 20
  • 博客积分: 1540
  • 博客等级: 上尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-02 14:09
文章分类

全部博文(20)

文章存档

2011年(15)

2010年(5)

我的朋友

分类:

2011-04-13 10:38:18

参考
单精度:1位符号位,8位指数位,23位有效数字。
双精度浮点数:1位符号位,11位指数位,52位有效数字。
计算规则:数字 = 有效数字*2^指数*符号

举个例子:234.0用float类型表示时使用4字节保存,内容是 0x436a0000。换成二进制表示为01000011011010100000000000000000,其中符号为0,指数为10000110,有效数字为11010100000000000000000。指数换成10进制为134,减去127为7。有效数字其实是小数部分,加上省略的整数部分1为1.110101,将小数点向右移7位就相当于乘以2的指数次幂,即11101010,换成10进制为234。查看浮点数的内存表示可以用如下程序看:

float a = 234;

char c[4];

memcpy(c, a, sizeof(float));

c中的内容即是a的内存表示。

有效数字表示法是这样的:234表示成2.34e2,其中小数点前面的是整数部分,小数点后面的是小数部分,e后面的是指数部分。用10进制表示时整数部分是大于0小于10的数,而用二进制表示时就始终是1,使用浮点数表示法时单精度浮点数和双精度浮点数都省略这个整数部分。浮点数表示法中的指数部分是实际的指数加上一个固定的基数,单精度浮点数这个基数是127,双精度浮点数是1023。详细说明见
阅读(1663) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~