浮点数 IEEE754表示

本文详细介绍了IEEE754单精度浮点数的表示方法,包括尾数m、基数b和阶码e的概念。通过具体步骤展示了如何将这种格式转换为十进制数以及十进制数转换回IEEE754格式。同时,提到了Python中math.frexp函数在浮点数处理中的应用,并解释了sys.float_info.mant_dig表示的浮点数精度。
摘要由CSDN通过智能技术生成

1. a = m × b^e

m:尾数(即定点数) b:基数    e:阶码

2. 表示结构:

 

3. IEEE754单精度浮点数---->十进制(以float为例)

1)公式:

s阶符,E阶码,M尾数,对应位数:1+8+23

 2)例子1:41A4C000

step1: 转换成二进制:1000001101001001100000000000000 

step2: S=0,E=10000011=131,M=01001001100000000000000 

step3: 131-127=4,1.010010011右移4位--->10100.10011得到10100.10011=20.59375

step4: 20.59375 * 2^4

参考链接:【计算机组成原理】IEEE754单精度浮点数转十进制_哔哩哔哩_bilibili

4. 十进制 ----> IEEE754单精度浮点数格式(以float为例)

1)与上面的公式相反,阶码E要加上127

2)例子:263.3

step1:100000111.010011001...

step2:符号位为正数,S=0

step3:计算E, 100000111转换成1.M的形式得到1.M*2^8,127+8=135,转换成二进制10000111,则E=10000111

step4: 计算M,去掉1.M中的1,M=00000111010011001

step5: 得到0 10000111 00000111010011001

参考:【计算机组成原理】十进制转IEEE754单精度浮点数格式_哔哩哔哩_bilibili

5. python中的math.frexp:用于获取给定数字的尾数和指数

scalar = 2.3008604
flt_exponent0 = math.frexp(scalar)[0]
print(flt_exponent0)  # 尾数 0.5752151
flt_exponent = math.frexp(scalar)[1]
print(flt_exponent) # 阶码 2

注:math.frexp的尾数部分为0

step1:2.3008604转换成 IEEE 754标准十进制为: 1.1504302 * 2^1

step2:由于math.frexp指定尾部部分为0,所以尾数对应的二进制表示需要右移一位,对应阶码+1

step3:0.5752151* 2^2,即尾数为0.5752151,阶码为2

6.  python中的sys.float_info.mant_dig  浮点数的精度=53

参考链接:单精度与双精度是什么意思,有什么区别? - 知乎

【在线工具】

在线进制转换:在线进制转换-IEE754浮点数16进制转换

在线IEEE 754计算器:IEEE 754 Calculator

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值