gpt4 book ai didi

python - 这个 float 的小数部分的前 32 位是多少?

转载 作者:太空狗 更新时间:2023-10-29 22:05:12 25 4
gpt4 key购买 nike

我正在查看以下 SHA256 pseudocode在维基百科上。

具体来说,我正在查看以下部分。

//Initialize variables
//(first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):
h0 := 0x6a09e667

我想弄清楚 h0 是如何生成的。我从评论中知道这应该是 2 的平方根的小数部分。我相信我可以通过键入以下内容来获得 2 的平方根的小数部分。以下所有代码均来自python repl。

>>> math.modf(math.sqrt(2))[0]
0.41421356237309515

在文件的顶部,它指出所有常量的声明都是 Big Endian。我知道我的环境是 Small Endian 因为我打字。

>>> import sys
>>> sys.byteorder
'little'

因此,根据我对 h0 中的十六进制值的手动操作,Little Endian 表示应该是 0x67e6096a。

>>> int(0x67e6096a)
1743128938

我卡住了。我尝试了各种操作,但没有一个以这个结果告终。我不知道如何获取 float 小数部分的前 32 位。我知道我的 0.41421356237309515(浮点)结果可以以某种方式转换为 1743128938(整数),但我真的不知道如何转换。获取 float 小数部分的前 32 位需要哪些步骤?请只用 Python 回答。

谢谢。

最佳答案

  1. 在 Windows 上使用计算器计算 sqrt(2) (1.4142135623730950488016887242097)
  2. 取小数部分(0.4142135623730950488016887242097)
  3. 乘以 2^32 (1779033703.9520993849027770600526)
  4. 用十六进制表示整个部分 (6A09E667)

瞧。 (向 OP 道歉,因为没有做 Python 的回答,但我希望方法是清楚的。)

关于python - 这个 float 的小数部分的前 32 位是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com