Скажи, у меня есть поплавок. Я хочу первые 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
Я наивно пытался выполнить слово floor (((sqrt 2) - 1) * 2 ^ 32), а затем преобразовать возвращенное целое число в Word32. Это совсем не похоже на правильный ответ. Я полагал, что, умножив на 2 ^ 32 силы, я фактически сдвинул его на 32 места (после пола). Очевидно, дело не в этом. Как бы то ни было, как я могу сгенерировать h [0..7]?