gpt4 book ai didi

使用字节表示法对浮点值进行排序

转载 作者:行者123 更新时间:2023-12-04 11:34:25 24 4
gpt4 key购买 nike

如果有一个 8 字节的数据段,并在其中写入一个 double 浮点值,那么在什么情况下通过字节的数字比较和字典排序进行比较会一致?

当前理论:正数,大端

我相信如果数字是正数,并且表示是 big-endian,那么浮点值的数字顺序将与字节的字典顺序匹配。

这个想法是它首先对指数进行排序,然后对尾数进行排序。即使是“非规范化”的 IEEE 表示也不应该引起任何问题。

这是真的?

(我正在使用 Node 的 Buffer::writeDoubleBE ,但这无关紧要。)

跟进

我认为一个简单的修改可以将其扩展到负数:XOR 所有正数与 0x8000...和负数 0xffff... .这应该翻转两者的符号位(所以负数先行),然后反转负数的顺序。有没有人看到这个问题?

最佳答案

你的方法:

I think a simple modification can extend this to negative numbers: XOR all positive numbers with 0x8000... and negative numbers with 0xffff.... This should flip the sign bit on both (so negative numbers go first), and then reverse the ordering on negative numbers. Does anyone see a problem with this?



绝对是答案。
此外,它被用于例如 dBase和克隆来组织浮点列上的排序,我猜接下来是更新的 DB 代。

此外,它与根据 IEEE-754 的二进制表示的“全序”相同。 (但不是十进制的,后者要复杂得多。)

更新:正如@Sneftel 所建议的:在转换为位字符串之前,您会发现将 -0 替换为 +0 很有用。

关于使用字节表示法对浮点值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43299299/

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