使用字节表示法

时间:2017-04-08 19:12:41

标签: sorting floating-point ieee-754

如果有一个8字节的数据部分并写入一个双精度浮点值,在什么条件下通过数字比较和字典的词典排序进行比较同意?

当前理论:积极的,大端的

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

这个想法是它首先对指数进行排序,然后对尾数进行排序。甚至"非规范化" IEEE代表不应该引起任何问题。

这是真的吗?

(我使用Node' Buffer::writeDoubleBE,但这不重要。)

后续

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

2 个答案:

答案 0 :(得分:6)

你的方法:

  

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

绝对是答案。 此外,例如,在dBase和克隆中使用它来组织浮点列的排序,我猜它后面是更新的数据库生成。

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

更新:正如@Sneftel所建议的那样:在转换为位串之前,您可以找到将-0替换为+0。

答案 1 :(得分:0)

如果要让Radix排序保持稳定的排序算法,则必须再次交换负数部分中所有等号的子部分,因为当交换负数时,原始的稳定排序是稳定的。

协会教授 Arne Maus, 奥斯陆大学