有一个 IEEE 754 标准用于数字的二进制表示及其算法。它描述了标准化数字和非标准化数字。理论上,一切都很清楚。但是我想在控制台的内部表示机器中打印几个非规范化的数字,即 具有特征和尾数。例如,在 Python、C# 中如何做到这一点?一路上还有另一个问题。是否可以在二进制数字系统中使用真实文字在高级语言中工作?
有一个 IEEE 754 标准用于数字的二进制表示及其算法。它描述了标准化数字和非标准化数字。理论上,一切都很清楚。但是我想在控制台的内部表示机器中打印几个非规范化的数字,即 具有特征和尾数。例如,在 Python、C# 中如何做到这一点?一路上还有另一个问题。是否可以在二进制数字系统中使用真实文字在高级语言中工作?
在 Python3 中基于 EnSO 的回答:
符号、指数(移位)和尾数分别输出。
对于双精度数字,您需要替换
!f为!d并相应地为订单输出更多字节:要将位转换回数字,可以使用以下函数:
在 Python 中,您可以使用
float.hex一种方法来打印浮点数的精确表示(如%a在 C (C99) 中:)[-]0xh.hhhp±d:如果您想查看字节的 IEEE 754 binary64 表示:
在位形式中,它看起来像:
由于阶
0数是 ,因此给出了一个非规范化数:非规范化数字使用以下公式计算:± sign × (0+mantissa/ 2 52 ) 2 1 − 1023 (double):
反过来:
要获得表示为:
f = m * 2**e,您可以math.frexp()调用:要获得二进制浮点数的小数表示:
请参阅将小数转换为二进制数系统。