Chinaunix首页 | 论坛 | 博客
  • 博客访问: 362884
  • 博文数量: 105
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-16 13:58
个人简介

记录有意义的东西

文章分类

全部博文(105)

文章存档

2013年(105)

我的朋友

分类: C/C++

2013-08-23 10:48:55

  1. void PrintFloat(float value)  
  2. {  
  3.     int FloatValue = *reinterpret_cast<int*>(&value);  
  4.     if(FloatValue&0x80000000)  //最高位为符号位  
  5.         cout<<"-"<
  6.     int Exp = (FloatValue>>23)&0xff; //取得指数字段,一个字节。第二到第9字节  
  7.     int MantissaPart=(FloatValue&0x7fffff)|0x800000;//尾数字段,23位加一个默认位,共24位。  
  8.   
  9.     cout<<"整数部分:"<<(MantissaPart>>(150-Exp))<//取得整数部分,24位右移小数的位数。  
  10.     int FloatPath = MantissaPart&(0xffffff>>(Exp-126));//取得小数部分  
  11.     cout<<"小数部分:"<float(1<<(150-Exp))<// 取得的整数,除以小数位数就是小数的值。  
  12.   
  13.     //cout<<(xtx  
  14. }  
对于浮点数的存储格式,可参考网页:
阅读(2594) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~