Python 中的十进制到二进制半精度 IEEE 754
Decimal to binary Half-Precision IEEE 754 in Python
我只能使用 struct.pack
模块将小数转换为二进制单精度 IEEE754,或者使用 numpy.frombuffer
执行相反的操作(float16 或 float32)
是否可以使用 Numpy 将小数转换为二进制半精度浮点数?
我需要打印转换结果,所以如果我输入 "117.0"
,它应该打印 "0101011101010000"
float16
method suggested by Mark Dickinson后面必须跟tostring()
方法才能得到所需的二进制表示:
data = numpy.float16(2.3).tostring()
if I type "117.0", it should print "0101011101010000"
>>> import numpy as np
>>> bin(np.float16(117.0).view('H'))[2:].zfill(16)
'0101011101010000'
.view('H')
将float16
值占用的内存重新解释为无符号整数。
我只能使用 struct.pack
模块将小数转换为二进制单精度 IEEE754,或者使用 numpy.frombuffer
是否可以使用 Numpy 将小数转换为二进制半精度浮点数?
我需要打印转换结果,所以如果我输入 "117.0"
,它应该打印 "0101011101010000"
float16
method suggested by Mark Dickinson后面必须跟tostring()
方法才能得到所需的二进制表示:
data = numpy.float16(2.3).tostring()
if I type "117.0", it should print "0101011101010000"
>>> import numpy as np
>>> bin(np.float16(117.0).view('H'))[2:].zfill(16)
'0101011101010000'
.view('H')
将float16
值占用的内存重新解释为无符号整数。