【发布时间】:2021-11-17 06:24:36
【问题描述】:
我正在想办法做到这一点:
假设我的 IEEE-754 浮点数的小数部分是 0b10110011001100110011010
我正在尝试获取每个位并将其乘以对应于它的位位置的 2 的幂,然后将它们全部加起来。
就像这样:1*2-1+ 0*2-2 + 1*2-3 + 1*2-4 + 0*2-5 + 0 * 2-6 + ...
我这辈子都不知道如何将数字分成几位。
理想情况下是这样的:
In [33]: value = 0x6f
In [34]: result = function(value)
In [35]: result
Out[35]: [0,1,1,0,1,1,1,1]
不一定是列表,但元组也可以。
然后我很有信心我可以使用for i in result 函数来获得我需要的答案。但是,如果您对如何制作第二部分有想法,我也会全神贯注!
有什么想法吗?
【问题讨论】:
-
bin(0x6f)是你需要的 -
你想把你的十六进制值转换成二进制吗?
-
似乎是 XY 问题。你真正想要得到什么?
float的确切值?它在内存中的内部表示? -
无需处理单独的位。
0b10110011001100110011010 / 2**23 == 0.7000000476837158. -
@dan04 我正在尝试获取内存中的表示。在 PowerPC 架构中,单精度浮点值存储在 64 位寄存器中,但使用 25 个小数位。不是标准的 23。寄存器中剩余的 29 位为 0。我希望能够计算 PowerPC 单精度浮点值并查看它在 64 位寄存器中的表示。所以它看起来像这样:`符号位_Exp _Fraction_zeros`
0b0_00000000_1111111111111111111111111_00000000000000000000000000000
标签: python python-3.x floating-point binary ieee-754