WebAssembly 使用 IEEE-754 编码f32
和f64
.
正在使用"\00\00\00\00\00\00\f0?"
ASCII 编码初始化数据部分。这正是 s-expressions 的作者选择使用的,在实际的二进制文件中,它被编码为 4 或 8 个字节(对于f32
vs f64
)。我们也可以使用 hex-float 作为 C / C++ 支持,我们只需要无损编码(并且 hex-float 对 NaN 是有损的)。另一种选择是base64,或原始十六进制,或其他。数据部分不关心它包含什么数据类型:在二进制格式中,它只是字节。所以我们并没有真正编码浮点值或整数,只是字节。
这解码为 hex 3FF000000000
。为什么??
末尾有一个,它的 ASCII 值是3F
. 然后你有所有没有更好表示的转义 ASCII 值,因此使用转义编码。这真的不是一个很好的代表!
这是什么意思?试试这个工具来理解 IEEE-754 编码!
Binary64: 3FF0000000000000
Status Sign [1] Exponent [11] Significand [52]
Normal 0 (+) 01111111111 (0) 1.0000000000000000000000000000000000000000000000000000 (1.0)
所以符号为正,指数为0,有效数为1.0。这就是1.0
IEEE-754 中的价值。