浮点数的相关知识

一、浮点数的简介

计算机作为计算的工具,必然要支持小数。在计算机中,小数的类型有两种,一种是定点数定,就是表示小数点的位置是固定的。还有一种是浮点数,浮点数的小数点是浮动的,小数点后面的小数位数不固定。

二、浮点数的存储方式

在IEEE-754标准中,浮点数的存储格式是这样的:
在这里插入图片描述
S是符号位,用来表示正负,0表示正,1表示负,只占1bit。
E是指数位,用来存储“浮点数表示成科学计数法形式时”的幂次。注意:E=常数+e,其中e就是2的幂次,常数为127
M是尾数,就是浮点数表示成科学计数法形式时小数点后面的数。

三、如何将浮点数转换为二进制数

1、将浮点数分为两部分,整数和小数部分。整数部分依旧采用“除2取余,逆向取值”的方法;而小数部分则乘2取整,直到余下的小数为0或者满足精度要求为止,然后顺序取值(即最先得到的整数为最高位,最后得到的整数为最低位)。
在这里插入图片描述
若采用科学计数法来表示的话,就是:
在这里插入图片描述
我们知道浮点数分为单精度和双精度。
若是单精度,则占4个字节,E占8位,M占23位,再加上S段,总共就是32位,刚好也是4个字节,两者是一致的。
若是双精度,则占8个字节,E占11位,M占52位,再加上S段,总共就是64位,刚好也是8个字节,这两者也是一致的。

单精度:

若是单精度,那么E就占8位,取值范围就0—255,且e=E-127,所以e的取值范围就是-127~128。
那么,接下来,我们就可以开始计算了:
显然,S=0,因为58.625是正数。
而E=e+127=5+127=132,转换成二进制就是1000 0100。
M则取小数部分,所以M=1101 0101。
所以,最终58.625在内存存储的二进制就是

在这里插入图片描述
由于单精度占4个字节,所以要在不改变数值的大小的前提下将位数补齐,所以才在小数后面补0。
若是-58.625,那就只需把S改成1即可,其他位不变。

双精度:

若是双精度,那么E就占11位,取值范围就是0—2047(即2048-1=2^11-1),且e=E-1023,所以e的取值范围就是-1023~1024。
接下来,我们再开始计算双精度的二进制:
显然,S=0,因为58.625是正数。
而E=e+1023=5+1023=1028=1028的二进制。
M则同样取小数部分,所以M=1101 0101。
所以,双精度的58.625在内存中的二进制存储就是:
在这里插入图片描述
同样,若是-58.625,则只需把S改成1即可,其他位不变。
最后提供一个可以在线转换的网站:在线浮点数转二进制
原文出处:浮点数十进制与二进制之间的转换

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值