联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他

admin 3个月前 (07-03) 科技 43 0

作为一名程序猿,若是某一天,有一个妹子拿着一个浮点数,求你教她怎么换算成二进制,若是你不能单手求出来,你都不能算一个及格的工具人.....好吧,是一个及格的程序猿(狗头保命)。

回归正题,有很多多少小伙伴去事情之后,早已经忘了最基本的盘算机基础,今天,来讲下,在盘算机中,怎么用二进制示意浮点数?下次再有人问你,就把这篇文章丢给他。

作为一种数据类型,浮点数应用普遍。在处置诸如订单买卖、钱币盘算、或者商品金额的方面,应该小心慎用浮点数。在界说浮点数变量的时刻,不完全明白原理,就容易泛起种种揪心的问题

那么,正题来了。

浮点数在盘算机中的存储方式遵照IEEE 754浮点数的计数尺度,那么,IEEE 754浮点数的计数尺度怎么示意浮点数的?

  • 浮点数数学示意:

  • 符号位(sign):决议该浮点数的正负
  • 尾数(significand):二进制小数,局限在[1,2)或者[0,1)中
  • 阶码(exponent):对浮点数加权,权重为2的E次幂

IEEE尺度754划定了三种浮点数花样:单精度、双精度、扩展精度。前两者正好对应C语言里头的float、double,限于篇幅,本文仅讨论单精度、双精度浮点花样。

实在,IEEE754尺度可以归纳综合成一张图片,如下


接纳尾数+阶码的编码方式。实在就是在我们学过的数学知识中,就是类似于科学计数法。即有效数字+指数位

以是,只要给出:符号(S)、尾数部门(M)、阶码部门这三种信息,就可以准确的示意一个浮点数。在C语言中,浮点数的数据类型最常用的就是float、double,那么,他们在盘算机中的存储结构是怎样的呢?

联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 第1张
联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 第2张
浮点数的各个部门的寄义如下表格所示

符号部门(S) 阶码部门(E) 尾数部门(M)
0示意正(+),1示意负(-) 阶码部门实在就是指数部门 float 指数部门8位,可以示意的指数局限位-127~128 double 指数部门11位,可以示意的指数局限位-1023~1024 决议浮点数的精度 float 尾数部门23位,换算成十进制为223 =8388608,因此精度为6~7位 double 尾数部门23位,换算成十进制为252 =4503599627370496,因此精度为15~16位

结论

浮点数交给盘算机存储的,可能会有精度的丢失问题,出了问题的话,在大型的项目中,是很难找出问题的,因此提前做好计划与盘算是有需要的。

联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 第3张

盘算实例

第一个例子

把十进制小数0.475转换成二进制,详细应该怎么操作?

1. 将小数划分成整数+小数两部门

2. 整数部门转换

转换接纳除2取余法,此处的0.475的整数部门为0,不需要操作。

3. 小数部门转换

转换接纳乘2取整法。详细看下图

联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 第4张
3. 合并效果

整数部门+小数部门,获得二进制效果为 0.101.

凭据IEEE754尺度,即符号位+尾数+阶码的计数方式,可以示意为

1.01 × 2-1

  • 符号位:0
  • 阶码部门:以float为例子,则为 127 + (-1)=126,以是二进制为:01111110
  • 尾数部门:以float为例子,应为 23位,尾数补齐之后为0100000000000000000000

最终效果为(以float示意)

0011111100100000000000000000000

第二个例子

把十进制小数8.26转换成二进制,详细应该怎么操作?

联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 第5张
整数部门+小数部门 获得二进制效果为1000.0100001 .....

凭据IEEE754尺度,即符号位+尾数+阶码的计数方式,可以示意为

1.0000100001 × 2 3

  • 符号位:0
  • 阶码部门:以float为例子,则为 127 + (3)=130,以是二进制为:10000010
  • 尾数部门0.0000100001...,,它本身无限不循环,然则若是以 float 为例子,截取 23位,示意为00001000010100011110110

最终效果为(以float示意)

01000001 00000100 00101000 11110110

因此,对于这种无限位数的小数,用盘算机去存储必然会导致精度的损失。以是,各位在使用过程中一定要郑重小心。

结语

浮点数转换为二进制就解说到这里了,以为有用的老铁们,请点赞关注我吧,另外,关注我的老铁们可以私聊我,获取浮点数转换为二进制的神器,这样子,再也不用自己手撕浮点数转为二进制了。

联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他 第6张

若是以为我写的不错的话,帮个忙呗

1.关注我的知乎账号小丛,上面有我的文章同步,同时需要询问学习盘算机履历的话,也迎接私聊。
2.点赞,关注我,这是对我最大的激励了,有了你们的激励,我会写出更多的优质文章。
,

Allbet Gmaing开户

欢迎进入Allbet Gmaing开户(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

皇冠APP声明:该文看法仅代表作者自己,与本平台无关。转载请注明:联博以太坊:还不会浮点数转二进制?下次有人问你,直接把这篇文章扔给他

网友评论

  • (*)

最新评论

标签列表

    文章归档

    站点信息

    • 文章总数:530
    • 页面总数:0
    • 分类总数:8
    • 标签总数:893
    • 评论总数:151
    • 浏览总数:9270