如何将float16数组转换为带符号的16位二进制?
将NumPy float16数组转换为16位IEEE 754二进制字符串
要把你的NumPy float16数组转换成带符号的16位二进制字符串(对应IEEE 754半精度浮点格式),可以用以下方法,在Jupyter Notebook中直接运行即可:
实现代码
import numpy as np # 你的原始数组 arr = np.array([-0.1142 , 0.11127 , 0.0374 , 0.02007 , -0.05737 , -0.02058 , -0.1595 , -0.1288 , 0.1436 , -0.05212 , 0.2437 , 0.0046 , -0.1456 , -0.09485 , -0.0788 , 0.1755 , -0.2429 , -0.1204 , -0.01064 , 0.01154 , 0.06058 , -0.02666 , 0.01773 , 0.03436 , -0.1262 , -0.3428 , -0.068 , -0.10645 , 0.0669 , -0.02094 , -0.0751 , 0.001348, -0.1737 , 0.01146 , 0.01648 , 0.03613 , 0.03384 , -0.063 , 0.1617 , -0.03023 , -0.258 , 0.0385 , 0.0382 , 0.1821 , 0.2104 , -0.01604 , 0.05945 , -0.1809 , 0.1847 , -0.1569 , 0.02007 , 0.1757 , 0.08514 , 0.07886 , -0.00872 , -0.1108 , -0.01473 , 0.1075 , -0.1221 , 0.0163 , 0.03275 , -0.01775 , 0.01232 , -0.0705 ], dtype=np.float16) # 转换为16位二进制字符串 binary_list = [format(x.view('uint16'), '016b') for x in arr] # 打印每个元素的原始值和对应的二进制 for val, binary in zip(arr, binary_list): print(f"值: {val:.6f} | 16位二进制: {binary}")
代码说明
x.view('uint16'):将float16类型的元素转换为对应的16位无符号整数,这个整数就是该浮点数在IEEE 754半精度格式下的二进制编码的十进制表示。format(x, '016b'):把整数格式化为16位二进制字符串,自动补前导零,确保输出长度固定为16位。- 输出的二进制字符串结构符合IEEE 754半精度标准:
- 第1位:符号位(0表示正数,1表示负数)
- 第2-6位:5位指数位
- 第7-16位:10位尾数位
内容的提问来源于stack exchange,提问作者jlove
相关产品推荐
相关产品推荐

