double float 类型在内存中的存储形式

一、基础知识

浮点数分为 单精度和双精度,在内存中都分为三部分;
①符号位;
②指数位;
③尾数位;
Float类型内存形式:
在这里插入图片描述

图1 float类型在内存中的形式
double类型内存形式:
在这里插入图片描述

图2 double类型在内存中的形式

根据浮点数的存储标准(IEEE制定 https://en.wikipedia.org/wiki/IEEE_754-1985 ),
float类型指数的起始数为127(二进制0111 1111),即指数为0111 1111时代表科学计数法的指数位为0;
double类型指数的起始数为1023(二进制011 1111 1111),即指数为011 1111 1111时,代表科学计数法的指数位为0;

二、举例说明

下面用举例的方式进行详细讲解:1.0在内存中是如何存储的

第一步:将1.0十进制转换为二进制,如图3所示。1.0(十进制)=1(二进制)
在这里插入图片描述

图3 数字1.0的十进制转换二进制
第二步:将二进制写成科学计数法;1.0(十进制)=1(二进制)= 1.0 * 10^0;
第三步:关注尾数和指数,1.0 * 10^0;指数位为0;尾数位为0,
第四步:计算指数和尾数
指数位有初值,初值为011 1111 1111,因此指数位为 011 1111 1111 + 0 = 011 1111 1111
尾数位没有初值,初值为0,因此尾数位为 0 + 0 = 0;
最后,数字double 1.0类型在内存中的形式如图4所示;
在这里插入图片描述

图4数字1.0在内存中的存储形式
使用vc6.0验证double 1.0 在内存中的存储形式,截图如下:
在这里插入图片描述

图5验证数字1.0在内存中的存储形式

第二个例子:double 9.0在内存中的存储形式

在这里插入图片描述

图6 数字9.0的十进制转换二进制

第一步:十进制转二进制; 9.0(十进制) = 1001(二进制)
第二步:二进制写成科学计数法; 1001 = 1.001 * 10^3;
第三步:查看尾数和指数; 尾数为001指数为3=11(二进制)
第四步:计算尾数和指数 尾数位001;
指数位11 + 011 1111 1111 = 100 0000 0010
因此9.0在内存中的存储形式如图7所示:
在这里插入图片描述

图7数字9.0在内存中的存储形式

使用vc6.0验证double 9.0 在内存中的存储形式,截图如下:
在这里插入图片描述

图8验证数字9.0在内存中的存储形式

第三个例子,我们可以进行熟练的分为两步;

在这里插入图片描述

图9 数字133.0的十进制转换二进制

第一步:十进制转二进制并写成科学计数法;
133.0(十进制) = 10000101(二进制)= 1.0000101 * 10^7;
第二步:计算尾数和指数;指数=7=111(二进制)
尾数即为0000101
指数位111 + 011 1111 1111 = 100 000 0110
因此133.0在内存中的存储形式如图10所示:
在这里插入图片描述

图10数字133.0在内存中的存储形式

使用vc6.0验证double 133.0 在内存中的存储形式,截图如下:
在这里插入图片描述

图11验证数字133.0在内存中的存储形式

2.5 自己算一下吧,下图有答案;
在这里插入图片描述

图12 验证数字2.5在内存中的存储形式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值