フロートの分数部分の最初の32ビットをWord32に変換するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/5926169

質問

フロートを持っているとします。このフロートの分数部分の最初の32ビットが欲しいですか?具体的には、SHA256擬似コードのこの部分を動作させることを検討しています(ウィキペディアから)

# Note 1: All variables are unsigned 32 bits and wrap modulo 232 when calculating
# Note 2: All constants in this pseudo code are in big endian

# Initialize variables
# (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):
h[0..7] := 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19

私は素朴にフロア(((SQRT 2)-1) * 2^32)を実行してから、返された整数をWord32に変換しようとしました。これはまったく正しい答えではないようです。 2^32のパワーを掛けることで、32の場所(床の後)に効果的にシフトしたままにしたと考えました。明らかに、そうではありません。とにかく、長く、それ以外は、どうすればh [0..7]を生成するのですか?

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top