教育python模块来解析float并检查IEEE754算法的内部。
floatedu的Python项目详细描述
Float-IEEE754-说教
用于解析浮点数并检查 IEEE 754内部表示。在
安装
pip install floatedu
用例
它可以用来了解ieee754模型是如何工作的。 这意味着它几乎只对教育有用 目的。在
简单示例
使用float32规范创建3个浮动并打印它们 作为本地浮动:
^{pr2}$按通用公式打印号码详细信息:
print(repr(f_num))# {'value': float('1234.4566650390625'),# 'kind': 'normal', 'k': 8, 'p': 24, 'bias': 127,# 'bits': '0_10001001_00110100100111010011101',# 'sign': 1, 'exponent': 137, 'fraction': 0.20552408695220947,# 'significand': 1.2055240869522095,# }
所有东西都可以作为一个属性访问:
print(f_num.kind,f_num.sign,f_num.exponent,f_num.fraction)# normal 1 137 0.20552408695220947
Float
是list
的子类,可以实时更新:
print(f_num.sign_bit)print(f_num.exponent_bits)print(f_num.fraction_bits)f_num.sign_bit[0]=1# Make number negativeprint(f_num)# [0]# [1, 0, 0, 0, 1, 0, 0, 1]# [0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1]# -1234.4566650390625
格式和公式
ieee754定义了各种类型的二进制浮点。 这个模块实现了标准,此外,还实现了一些非标准 类型。在
位按照方案从左到右排列
sign . exponent . fraction
。p
值包括隐式位(not
实际存储)。在
例如,BFloat16
存储为:
种类
一个数字可以是零,无穷大,而不是一个正常或低于正常的数字。 前三个例子已经是值了。正规数和次正规数 是根据一个方程式计算出来的。在
确定如何计算该值足以测试exp
和{
零和无穷大
对于零和无穷大,这个值是微不足道的。如果最左边的位是0,则 值为正(+0或+inf)。否则为负(-0或-inf)。在
不是数字
如果不是数字,如果不返回 适当的“非价值”。在
正常
正常数值可以通过公式(通用公式和
float32
公式):
另一种考虑这个公式的方法是考虑 数字作为带符号位的定点二进制数。在
在这种情况下,整数部分是指数和分数 部分(加1)是有意义的。一、 e
实施
每个实现的浮点类型都作为一个类可用:
fromfloateduimport*[Float,Float8,Float16,BFloat16,Float64,Float32,Float128,Float256]
实际的实现类是Float
,无法实例化
直接。在
它必须作为类提供p
、k
和{floatedu/Float.py
)。在
- 项目
标签: