Сортировка кортежей внутри целых чисел со знаком - PullRequest
0 голосов
/ 11 апреля 2011

Я сортирую кортежи из 16 + 16 бит как 32-битные целые числа с SSE2. Есть только целочисленные инструкции со знаком для сравнения и мин / макс. У меня нет проблем с порядком для верхней части, так как это просто хэш. Но записи с отрицательными хешами будут отсортированы в обратном направлении (верно?) Возможные, но не очень удачные решения могут быть:

  • Обнуление старшего бита для хэшей, потеря точности (не велика)
  • Конвертировать положение в отрицательное, если установлен старший бит хеша, и преобразовать его обратно после сортировки.

Есть ли лучший способ?

1 Ответ

1 голос
/ 11 апреля 2011

Просто вычтите 0x80000000 из ваших 32-битных значений, используйте подписанные операции, а затем добавьте обратно 0x80000000.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...