#Python# Float 浮点数最大值&十进制转二进制原理

在python 中,可以用下面类似的函数验证每种数值类型大小:
import numpy as np;
np.finfo(np.float16).max;
>>> 65500

在这里插入图片描述

### 十位二进制数表示的浮点数范围 对于10位二进制数用于表示浮点数的情况,通常会遵循类似于IEEE 754标准定义的方式。然而,在IEEE 754标准中并没有专门针对10位浮点数的规定[^2]。 为了说明如何通过10位来表达浮点数值及其可能覆盖的范围,可以假设一种简化模型: - **总长度**:10位 - **符号位(Sign Bit)**:1位 - **指数部分(Exponent Bits)**:3位 - **尾数部分(Fraction/Mantissa Bits)**:6位 #### 符号位 (Sign Bit) 最左边的一位用来表示正负,其中`0`代表正值而`1`则意味着负值。 #### 指数部分 (Exponent Bits) 接下来三位作为偏置后的指数字段。由于只有三个比特可用作指数存储空间,因此实际能编码的最大无符号整数为\(2^{3}-1=7\)。考虑到还需要支持零以及次正规化形式下的最小指数,一般采用偏移量为3的方法处理这些指数值。这意味着真正的指数是从\(-3\)到\(4\)之间变化。 #### 尾数部分 (Fraction/Mantissa Bits) 最后六位构成了有效载荷中的小数部分。当涉及到规格化的浮点数时,默认情况下隐含了一个前导'1.'位于这六个显式给出的小数之前;但对于非规范化情况,则不存在这样的默认前置‘1’。 基于上述设定,可得如下结论: - 对于最大正常化浮点数而言,其形式将是 \( (-1)^{s} \times 1.f_{mantissa} \times 2^{e-bias}\),这里\(f_{mantissa}\)由剩下的全部6个bit组成。 所以最大的正向浮点数大约等于 \( (+1)\times(1+\sum _{{i=0}}^{{5}}{\frac {b_{{i}}}{2^{{i+1}}}})\times 2^{4}=+(1.984375\times 2^{4})=(1.984375*16)=31.75\) - 负方向上的极限同样适用相同逻辑计算得出相应绝对值相等但带相反符号的结果。 值得注意的是,这种分配方式只是众多可能性之一,并不是严格意义上的IEEE 754实现。实际上,更常见的做法是在硬件层面使用更多位宽(比如单精度至少需要32位)以便提供足够的动态范围和精确度满足大多数应用场景需求。 ```python def max_positive_float(): sign_bit = 0 exponent_bits = '111' mantissa_bits = '111111' bias = 3 exp_value = int(exponent_bits, 2) - bias fraction_sum = sum([int(mantissa_bits[i]) / pow(2,i+1) for i in range(len(mantissa_bits))]) result = ((-1)**sign_bit)*(1 + fraction_sum)*pow(2,exp_value) return round(result, ndigits=4) print(max_positive_float()) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值