单精度浮点数在vc++6.0中内存格式

本文介绍了在VC++6.0环境下,单精度浮点数如何在内存中存储,包括符号、指数和尾数的表示方法,并通过代码示例展示了不同数值的二进制表示,揭示了浮点数存储的规则和特点。
摘要由CSDN通过智能技术生成

【补记】

这个文章是几年前写的,重新整理了一下到这里。

当时是在VC6的环境下做的测试,但是我怀疑这个基本上就是C++规范的实现。

 

【原文】
首先说明的是,浮点数在内存中始终只是是一个近似值,比如,2.3+4.5在java中等于6.777777777777779或者6.800000000000001,当然这也给程序员带来了不方便,c++相对就没有这个问题

浮点数存储时,分成三部分,分别是符号,指数和尾数。不同的系统采用不同的存储方法,比如指数,有的系统用移码存,有的用补码存,这里介绍的是vc++6.0里存储的方法。

程序源代码如下:

//在vc++6.0中调试通过
int main()
{
 float a=2.0f; //这里分别让a等于2.0,-2.0,1,0.75,2.5,0.1,0
 char *p=(char*)&a;
 p+=3;   //将地址由高到底
 int line=0,temp=0;
 while(temp=0;i--)
  {
   if(*p&(1〈〈i)) cout<</'1/';//作与运算,如果和1与为1,说明该二进制是1,否则为0,其中还有左移运算
   else cout<</'0/';
   line++;
   if(line%4==0) cout<</' /';
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值