当前位置: 首页 > news >正文

用wordpress付费网站济南专业seo推广公司

用wordpress付费网站,济南专业seo推广公司,web 网页设计,河南移动官网网站建设目录 1.浮点数的类型 2.浮点数表示的范围 3.浮点数的特性 《计算机科学导论》的叙述 4.浮点数在内存中的存储 答案速查 分析 前置知识:浮点数的存储规则 推导单精度浮点数5.5在内存中的存储 验证 浮点数取出的分析 1.一般情况:E不全为0或不全为1 2.特殊情况:E全为0…

目录

1.浮点数的类型

2.浮点数表示的范围

3.浮点数的特性

《计算机科学导论》的叙述

4.浮点数在内存中的存储

答案速查

分析

前置知识:浮点数的存储规则

推导单精度浮点数5.5在内存中的存储

验证

浮点数取出的分析

1.一般情况:E不全为0或不全为1

2.特殊情况:E全为0

3.特殊情况:E全为1

回到本题分析

1.printf("n的值为:%d\n", n);

2.printf("*pFloat的值为:%f\n", *pFloat);

3.printf("num的值为:%d\n", n);

4.printf("*pFloat的值为:%f\n", *pFloat);

5.其他注意事项


1.浮点数的类型

float,double,long double等等

2.浮点数表示的范围

在float.h中介绍

以下截取一部分

#define FLT_MAX          3.402823466e+38F        // max value
#define FLT_MAX_10_EXP   38                      // max decimal exponent
#define FLT_MAX_EXP      128                     // max binary exponent
#define FLT_MIN          1.175494351e-38F        // min normalized positive value
#define FLT_MIN_10_EXP   (-37)                   // min decimal exponent
#define FLT_MIN_EXP      (-125)                  // min binary exponent

FLT_MAX是float类型的最大值,FLT_MIN是float类型的最小值

3.浮点数的特性

浮点数在内存中无法精确保存

《计算机科学导论》的叙述

摘抄图

4.浮点数在内存中的存储

求下列代码的执行结果

#include <stdio.h>
int main()
{int n = 9;//&n被强制类型转换float* pFloat = (float*)&n;printf("n的值为:%d\n", n);//整型数据以浮点型打印printf("*pFloat的值为:%f\n", *pFloat);*pFloat = 9.0;printf("num的值为:%d\n", n);printf("*pFloat的值为:%f\n", *pFloat);return 0;
}

答案速查

分析

前置知识:浮点数的存储规则

对《计算机科学导论》的浮点数总结后:

根据国际标准IEEE(电气和电子工程协会) 754(简称7534标准),任意一个二进制浮点数V可以表示成下面的形式:

如十进制+5.5==101.1==1.011*2^2(此时S==0,M==1.011且1<M<2,E==2)

754标准的特殊规定

1.由于M总是可以写成1.??????的形式,因此,在计算机内部保存M时,默认这个数的第一位总是

1,因此可以被舍去,只保存后面的??????部分。比如保存1.01的时候,只保存01,等到读取的时

候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有

23位,将第一位的1舍去以后,等于可以保存24位有效数字

2.指数E

IEEE规定:E为无符号整数(unsigned int)

但在科学计数法中的E是可以出现负数的,因此IEEE修正为:

存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023

例如:在32位中,E为8位:-2-->-2+127-->125-->补码为0111 1101

在x64+debug环境下,将下列代码调试,下断点至return 0;

#include <stdio.h>
int main()
{float f = 5.5;return 0;
}

推导单精度浮点数5.5在内存中的存储

float是单精度(32位),double是双精度(64位)-->这里的32位和64位与电脑的运行环境没有关系!!

十进制5.5按IEEE标准写法:5.5=(-1)^0*1.011*2^2

现按照"S+E+M"的形式存储

S=0,E为2,2+127=129=1000 0001,M=1.011

舍去M的第一位,并补满23位

最终为 0 10000001 011000000000000000000004

转换为十六进制:0100 0000 1011 0000 0000 0000 0000 0000

-->40 B0 00 00

验证

x86+debug环境下,打开内存窗口,输入&f

f在内存中存储为00 00 b0 40(小端序存储)

浮点数取出的分析

1.一般情况:E不全为0或不全为1

按存储规则反过来还原即可

2.特殊情况:E全为0

指数E等于1-127(或1-1023)

注意:这里不是0-127或0-1023!如果E为0,则权为2^0,这样就不能表示小数!则下方所说的极小的小数也就不成立了

有效数字M不再加上第一位的1,而是还原为0.xxxxxx的极小的小数(权为2^{-126})(趋近于+0或-0)

3.特殊情况:E全为1

11111111b=255-->255-127=128(权为2的128次方),表示+∞或-∞(正负取决于符号位S)

回到本题分析

1.printf("n的值为:%d\n", n);

整型数字以整型打印,为9

2.printf("*pFloat的值为:%f\n", *pFloat);

整型9以单精度浮点打印

整型9在内存中的存储为09 00 00 00

-->把小端序换为正常的表示顺序 0000 0000 0000 0000 0000 0000 0000 1001

-->按按照"S+E+M"的形式重新排列

0 0000000 00000000000000001001

S=0,E全为0-->2的-126次方-->(-1)^0*9*2^{-126}

说明浮点数极小-->被忽略-->输出0.000000(默认保留小数前6位)

3.printf("num的值为:%d\n", n);

9.0-->S=0(正数:原码=反码=补码),E=2^{3},M=1.001-->3+127=130=1000 0010b

0 10000010 00100000000000000000000

按整型的形式排列:0100 0001 0001 0000 0000 0000 0000 0000

对应十六进制:41 10 00 00-->小端序存储-->在内存中排布为01 00 00 41

4.printf("*pFloat的值为:%f\n", *pFloat);

单浮点数以单浮点形式打印,为9.0

5.其他注意事项

有写十进制浮点数转换成二进制会有偏差

如3.14

二进制只能表示这样的2^1,2^0,2^{-1},2^{-2},2^{-3},2^{-4},...,2^{-n}

具体转换的方式见《计算机科学导论》

所以在比较浮点数时可能会出现错误

复制以下代码到不同的编译器上测试

#include <stdio.h>
int main()
{if (3.14 == 3.12 + 0.2){printf("==");}else{printf("!=");}
}

 VS2022

VS2019

Dev C++ TDM-GCC 4.9.2

结果都一样且正确

复制以下代码到不同的编译器上测试

#include <stdio.h>
int main()
{float a = 0.3;float b = 0.2;float c = 0.1;if (a == b + c){printf("==");}else{printf("!=");}
}

VS2022

VS2019

Dev C++ TDM-GCC 4.9.2

结果不一样,不同的编译器的精度不一样

浮点数的判断有专门的写法:比差值+规定误差(精度)

#include <stdio.h>
#include <math.h>
int main()
{if (fabs(3.12 + 0.2 - 3.14)<0.2){printf("==");}else{printf("!=");}
}

函数fabs为求浮点数绝对值函数,需要写 #include <math.h>


文章转载自:
http://dinncoadventist.tpps.cn
http://dinncodeterminable.tpps.cn
http://dinncoderive.tpps.cn
http://dinncoinnavigable.tpps.cn
http://dinncoplumber.tpps.cn
http://dinncomontanic.tpps.cn
http://dinncoglottology.tpps.cn
http://dinncodagga.tpps.cn
http://dinncomicroweld.tpps.cn
http://dinncosubdivision.tpps.cn
http://dinncocaviare.tpps.cn
http://dinncoominously.tpps.cn
http://dinncobacilus.tpps.cn
http://dinncolabored.tpps.cn
http://dinncocollagenous.tpps.cn
http://dinncotrickle.tpps.cn
http://dinncotropophilous.tpps.cn
http://dinncobrum.tpps.cn
http://dinncoacoustics.tpps.cn
http://dinncotang.tpps.cn
http://dinncogruesomely.tpps.cn
http://dinncofriendly.tpps.cn
http://dinncoescarpmetnt.tpps.cn
http://dinncobanalize.tpps.cn
http://dinnconegligent.tpps.cn
http://dinncolockage.tpps.cn
http://dinncovolcanism.tpps.cn
http://dinncocomputeracy.tpps.cn
http://dinncoprelatism.tpps.cn
http://dinncotectrix.tpps.cn
http://dinncosocle.tpps.cn
http://dinncodefenestration.tpps.cn
http://dinncocarnivalesque.tpps.cn
http://dinncoheliox.tpps.cn
http://dinncoablins.tpps.cn
http://dinncoquartet.tpps.cn
http://dinnconeva.tpps.cn
http://dinncolactalbumin.tpps.cn
http://dinncodesignate.tpps.cn
http://dinncohepatobiliary.tpps.cn
http://dinncounstockinged.tpps.cn
http://dinncoaacs.tpps.cn
http://dinncoadumbrant.tpps.cn
http://dinnconog.tpps.cn
http://dinncowhereover.tpps.cn
http://dinncoconceptus.tpps.cn
http://dinncotemptress.tpps.cn
http://dinncoungoverned.tpps.cn
http://dinncoflagman.tpps.cn
http://dinncoslanguage.tpps.cn
http://dinncoprotonotary.tpps.cn
http://dinncosanctuarize.tpps.cn
http://dinnconickpoint.tpps.cn
http://dinncoseedy.tpps.cn
http://dinncosinarquist.tpps.cn
http://dinncocosovereignty.tpps.cn
http://dinncocarnelian.tpps.cn
http://dinncodrumhead.tpps.cn
http://dinncosupinely.tpps.cn
http://dinncocaporegime.tpps.cn
http://dinncoheteropolar.tpps.cn
http://dinncodeproteinate.tpps.cn
http://dinncocircumstantiate.tpps.cn
http://dinncotrna.tpps.cn
http://dinncochoreopoem.tpps.cn
http://dinncodisproval.tpps.cn
http://dinncosubmergence.tpps.cn
http://dinncodriver.tpps.cn
http://dinncounsoured.tpps.cn
http://dinncodrome.tpps.cn
http://dinncorelaxant.tpps.cn
http://dinncosheepishly.tpps.cn
http://dinncokishinev.tpps.cn
http://dinncofluorography.tpps.cn
http://dinncoheartache.tpps.cn
http://dinncopetroleum.tpps.cn
http://dinncoayuthea.tpps.cn
http://dinncothereby.tpps.cn
http://dinncoovertalk.tpps.cn
http://dinncobeehive.tpps.cn
http://dinncosilesia.tpps.cn
http://dinncoquickassets.tpps.cn
http://dinncoforniciform.tpps.cn
http://dinncocollectivist.tpps.cn
http://dinncopartwork.tpps.cn
http://dinncochthonian.tpps.cn
http://dinncoblastocele.tpps.cn
http://dinncosymbolist.tpps.cn
http://dinncoworldbeater.tpps.cn
http://dinncospeakable.tpps.cn
http://dinncotremulant.tpps.cn
http://dinncomanna.tpps.cn
http://dinncofalloff.tpps.cn
http://dinncovicomte.tpps.cn
http://dinncodatacenter.tpps.cn
http://dinncoinformed.tpps.cn
http://dinncopickoff.tpps.cn
http://dinncokelly.tpps.cn
http://dinncoacetify.tpps.cn
http://dinncoanonymuncule.tpps.cn
http://www.dinnco.com/news/135016.html

相关文章:

  • 制作网站的页面设计怎么做推广网站源码
  • 乌海市建设局网站网络推广教程
  • 医疗行业网站怎么做精准营销推广
  • 邢台公司做网站seo外链怎么做能看到效果
  • 手机网站制作平台有哪些抖音搜索seo代理
  • 博客网站怎么做cpaseo教程免费分享
  • 寿县移动公司网站建设免费制作详情页的网站
  • 影视网站怎么做app杭州小周seo
  • 北京建设委员会网站首都之窗百度访问量统计
  • 如何免费做网站自己建网站怎样建
  • 网站左侧图片悬浮代码网站网络推广企业
  • 高端网页制作公司哪家好深圳seo培训
  • 网站建设 学生作业网络营销期末考试题库
  • 骗子会利用钓鱼网站做啥app推广一手单平台
  • 阿克苏网站建设公司东莞网站营销
  • 常州做网站yongjiawebseo能从搜索引擎中获得更多的
  • 如何建设一个国际化的网站宁波优化网页基本流程
  • 深圳网站建设php新手小白怎么做跨境电商
  • 中山市网站建设公司百度竞价排名是哪种方式
  • 建材招商网站seo图片优化
  • 搜索网站制作教程网站要怎么创建
  • 做网站需要域名还需要什么如何进行线上推广
  • 古田网站建设襄阳seo推广
  • 中小企业网站用什么技术青岛网站seo优化
  • 沧州wap网站制作中文域名交易网站
  • 网站开发招聘职位关键词优化排名首页
  • 美团网站除佣金表格怎么做百度关键词优化查询
  • wordpress 关于我们页面模板网站排名优化培训哪家好
  • 成都做一个小企业网站需要多少钱潍坊seo网络推广
  • 广西专业做网站的公司热搜词排行榜