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

6 篇文章 30 订阅
订阅专栏

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

在这里插入图片描述

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

作为一种数据类型,浮点数应用广泛。在处理诸如订单交易、货币计算、或者商品金额的方面,应该小心慎用浮点数。在定义浮点数变量的时候,不完全理解原理,就容易出现各种揪心的问题。

那么,正题来了。

浮点数在计算机中的存储方式遵循IEEE 754浮点数的计数标准,那么,IEEE 754浮点数的计数标准怎么表示浮点数的?

  • 浮点数数学表示:

在这里插入图片描述

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

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

其实,IEEE754标准可以概括成一张图片,如下

在这里插入图片描述
采用尾数+阶码的编码方式。其实就是在我们学过的数学知识中,就是类似于科学计数法。即有效数字+指数位

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

在这里插入图片描述
在这里插入图片描述
浮点数的各个部分的含义如下表格所示

符号部分(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位
结论

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

在这里插入图片描述

计算实例

第一个例子

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

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

2. 整数部分转换

转换采用除2取余法,此处的0.475的整数部分为0,不需要操作。

3. 小数部分转换

转换采用乘2取整法。详细看下图

在这里插入图片描述
3. 合并结果

整数部分+小数部分,得到二进制结果为 0.101.

根据IEEE754标准,即符号位+尾数+阶码的计数方式,可以表示为

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

最终结果为(以float表示)

0011111100100000000000000000000

第二个例子

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

在这里插入图片描述
整数部分+小数部分 得到二进制结果为1000.0100001 …

根据IEEE754标准,即符号位+尾数+阶码的计数方式,可以表示为

1.0000100001 × 2 3
  • 符号位:0
  • 阶码部分:以float为例子,则为 127 + (3)=130,所以二进制为:10000010
  • 尾数部分0.0000100001...,,它本身无限不循环,但是如果以 float 为例子,截取 23位,表示为00001000010100011110110

最终结果为(以float表示)

01000001 00000100 00101000 11110110

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

结语

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

在这里插入图片描述

如果觉得我写的不错的话,帮个忙呗

1.关注我的知乎账号小丛,上面有我的文章同步,同时需要询问学习计算机经验的话,也欢迎私聊。
2.点赞,关注我,这是对我最大的鼓励了,有了你们的鼓励,我会写出更多的优质文章。
整数及浮点数二进制表示
weixin_51312090的博客
07-24 3623
文章目录前言一、整数的二进制表示1.原码2.反码3.补码二、浮点数二进制表示 前言 对于该代码 public class hello { public static void main(String[] args) { int a = -17; System.out.println("二进制输出"+Integer.toBinaryString(a)); int b = 17; System.out.println("二进制输出"+
浮点数如何二进制
Janway-Win
05-09 2万+
  前几天在学习浮点数的时候,看《深入理解计算机系统》这本书,这本书很系统地讲解了关于浮点数的来龙去脉及其表示、运算、舍入和使用时的注意事项。但是看了之后,对于IEEE浮点表示还是比较懵*,后来看了CodeSheep这位大佬的推文才理解,本文也是载至其推文 https://mp.weixin.qq.com/s/LVpvmBO0GY6TC4gwL_12Yw 一、浮点数在计算机中是如何表示的?   学过《计算机组成原理》或者类似《计算机系统》这些课程的小伙伴们应该都知道,浮点数在计算机中的存储方式遵循IEEE
浮点数二进制表示
piglite的专栏
05-05 1万+
文章参考自:浮点数二进制表示(IEEE 754标准) 1. 小数用二进制如何表示 首先,给出一个任意实数,整数部分用普通的二进制便可以表示,这里只说小数部分如何表示 例如0.6 将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,直到小数部分为0。特殊情况:小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编程语言中表示小数会出现误差的原因 下面具体看一下小数0.6用二进制表示的计算过程 ..
浮点定点运算
热门推荐
ColdCode's Hello World~
07-24 2万+
Original Source: http://www.cnblogs.com/s_agapo/archive/2012/03/20/2407332.html http://blog.csdn.net/sonictl/article/details/9018681 原文基于信号处理,本文对原文进行了精简和勘误,主要就浮点定点运算的思想及实现进行说明: 1. 简介:
浮点数
qq_33540705的博客
12-17 9223
首先 浮点数2.5写成二进制应该为10.1(其中整数部分10b=2d, 小数部分0.1*2=1所以0.1b为0.5d)。 然后要把10.1规格化(写成1.xxxx * 2^n的形式,有点像科学计数法)得到1.01*2^1(其中2^1中的1为阶码, 1.01为有效数字) 加上2.5为正数,这就得到三部分信息: 1.有效数字为1.01. 2. 阶码为1. 3. 符点数为正数 而c/c++的float...
浮点数二进制换工具
03-31
好用的浮点数二进制换工具,通讯开发必备实用小工具,4字节浮点数换,支持正序倒序换。浮点数二进制二进制浮点数换准确。
javaScript实现浮点数十六进制字符
10-26
浮点数十六进制的方法有很多,在本文将为大家详细介绍下js中时如何实现的,下面有个不错的示例,感兴趣的朋友可以参考下,希望对大家有所帮助
浮点数二进制小工具
01-10
浮点数二进制二进制浮点数,E,PI二进制小工具
十六进制浮点数,十六进制浮点数在线,LabView
09-10
labview下实现16进制浮点数
浮点数与16进制换(含源代码)_单片机_浮点数_换_十六进制_实数_
09-30
浮点数与十六进制互相换,可提供编程人员方便。工控编程用外效多
float2hex浮点数换工具.rar
07-01
float2hex浮点数换工具.rar
浮点数在计算机中存储方式、十六进制(HEX)和浮点类型(float、double)
zhuguanlin121的博客
04-02 8668
浮点数在计算机中存储方式 浮点类型换为十六进制 方法1:用地址用指针 方法2:用共用体 方法3:使用memcpy 十六进制换为浮点类型
浮点数存储方式理解,浮点数和整数之间的
u013416923的博客
12-04 9802
按IEEE754标准,32位浮点数(float)和64位浮点数(double)的标准格式如下: S:符号位, 0:表示正数, 1:表示数 E:阶码,个人理解为将一个浮点数的整数部分换成二进制之后, 然后将该二进制数移位成1.M的形式, E为移动的次数e。在IEEE754标准中将浮点数的指数真值e变成阶码E时,需要加上固定偏移:单精度固定偏移:127,双精度固定偏移:1023 单精度(float)中E=e+127(2^(8-1)-1),双精度(double)中E=e+1023(2^(11-1)-
浮点数换与存储!
自闭患者的博客
04-24 1007
一、十进制浮点数换为二进制浮点数   规则:整数部分重复除法,小数部分重复相乘法   整数部分重复相除法:除基取余,直到商为0,余数反   小数部分重复相乘法:乘基取整,直到小数为0或者达到指定精度位,整数顺序排列   举例:把十进制浮点数6.625换为二进制浮点数 二、二进制浮点数换为十进制浮点数 &nbs...
浮点数的十进制和二进制换(详细例子解答)
qq_46284844的博客
01-22 1万+
需要用到浮点数换,以前学过又忘记了,就写篇文章巩固一下 最常用的浮点数二进制计算标准:IEEE二进制浮点数算术标准,也就是所谓的IEEE754,所以就介绍一下这个标准。 float类型 float占4个字节也就是32位,那么这32位的组成部分如下所示: (1) 符号位,这个就不多解释了,原数>0为0,原数<0为1,和整数的二进制表示方法一样。 (2) 指数位,这边的指数位指的就是2的多少次方,比如说2^3,那么我们就需要把这个3提取出来即可,这个3不能直接作为指数为的值,还需要处理。 (3
超详细的浮点数float与HEX之间的互相换,IEEE 754格式
weixin_63781201的博客
07-01 3173
超详细的浮点数float与HEX之间的互相换,IEEE 754格式
【IEEE754制32位浮点数】与十进制相互
Dys_debug的博客
10-17 1万+
【IEEE754制32位浮点数】与十进制相互
浅谈C/C++的浮点数在内存中的存储方式
weixin_38168786的博客
10-02 672
C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100...
浮点数二进制
Struugle_Guy的博客
06-13 8225
一个int类型表示的整数值是 -2^31 ~ 2^31-132位二进制表示 11111111111111111111111111111111  ~ 01111111111111111111111111111111 类似整数联想到浮点数是怎么表示的呢?最初正常人可能为这样想的但是这样好像表示的数也太小了,精确度也贼低。看看科学家的设计吧依次为  符号位  阶码位  尾数位   接下来怎么说呢?还是看...
wpf怎样将浮点数为十六进制?
最新发布
06-13
在WPF中,你可以使用`ToString`方法将浮点数换为十六进制字符串。以下是一个简单的示例: ```csharp double floatValue = 123.456; string hexValue = floatValue.ToString("X"); ``` 这段代码将浮点数`float...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 小白入门NAS—快速搭建私有云教程系列(一) 21656
  • 五分钟理解主存储器的基本组成结构 12569
  • 主存、辅存、内存、外存、存储器是什么?还傻傻分不清楚?看完这一篇就够了 10336
  • 吐血整理!这篇带你彻底理解主存中存储单元地址的分配 8415
  • 还搞不懂负数怎么用二进制表示?看完这一篇就懂了 7362

分类专栏

  • IDE实战 1篇
  • java细谈 4篇
  • 计算机组成原理 6篇
  • 网络进阶之路 2篇

最新评论

  • 大学四年走来,这些网络工程师必备的模拟器我都给你整理好了

    IMG-飞: 大佬, 还有连接吗。 失效了

  • 张一鸣:我的大学四年收获及工作感悟

    运维小赵: 写的真不错

  • 五分钟理解主存储器的基本组成结构

    CodeVald: 知乎上改名了 叫CodeVald

  • 五分钟理解主存储器的基本组成结构

    m0_62682445: 博主,你在知乎上是哪一个啊,知乎上叫小丛的太多了

  • 小白入门NAS—快速搭建私有云教程系列(一)

    邓盛余: 没有后续的吗???

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • IDEA 2020导入Eclipse项目并运行实战篇
  • 【2021情人节主题征文】| 写了一个表白网页后,我跟女神在一起啦
  • 还傻傻分不清楚equals和==的区别吗?看完就明白了
2022年1篇
2021年6篇
2020年9篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeVald

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司罗湖关键词按天收费布吉网站优化南联关键词按天扣费福永网站制作福永seo网站推广南山阿里店铺运营罗湖网络营销大浪网站搭建坑梓网站改版龙岗阿里店铺运营龙岗SEO按效果付费横岗关键词按天扣费宝安百度竞价包年推广南山网站推广工具大浪标王松岗网站优化按天收费大芬外贸网站建设福田网站优化软件丹竹头网站改版同乐百搜词包同乐网站推广罗湖SEO按效果付费观澜seo爱联如何制作网站大运百度网站优化排名西乡seo排名罗湖阿里店铺托管大运网站开发西乡网站建设设计大运网站建设设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化