我在玩MD5实现,并使用维基百科上的伪代码编写以下内容,用于整数正弦的二进制部分。我发现我的输出与广泛可用的预计算表之间存在差异。
我正在尝试弄清楚我的代码是否不正确,还是维基百科上的伪代码不正确。将下面代码中的math.Floor
替换为math.Ceil
可以修复预计算表与我的输出之间的差异。
package main
import "fmt"
import "math"
func main() {
var i float64
for i < 64 {
x := uint(math.Floor(float64(math.MaxUint32) * math.Abs(math.Sin(i+1))))
fmt.Printf("%d : %x\n", uint(i+1), x)
i = i + 1
}
}
1 : d76aa477
2 : e8c7b755
3 : 242070db
4 : c1bdceee
第1行和第2行与预计算表不同,而第3行是一致的。