对有符号整数内的元组进行排序
我使用 SSE2 将 16+16 位元组排序为 32 位整数。只有用于比较和最小值/最大值的有符号整数指令。我对较高部分的顺序没有问题,因为它只是一个散列。但是具有负散列的条目将向后排序(对吗?)可能但不是很好的解决方案可能是:
- 将散列的较高位归零,失去精度(不太好)
- 如果设置了散列的较高位,则将位置转换为负数,并且排序后将其转换回来。
有更好的办法吗?
I'm sorting tuples of 16+16 bits as 32bit integers with SSE2. There are only signed integer instructions for compare and min/max. I don't have a problem with the order for the higher part as its just a hash. But entries with negative hashes will be sorted backwards (right?) Possible but not great solutions could be:
- Zero the higher bit for hashes, losing precision (not great)
- Convert the position to negative if the higher bit of the hash is set, and convert it back after sorting.
Is there a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只需从 32 位值中减去 0x80000000,使用有符号运算,然后再加回 0x80000000 即可。
Just subtract 0x80000000 from your 32 bit values, use signed operations, then add back the 0x80000000 afterwards.