В моей таблице есть поле, которое представляет битовую маску. Я хотел бы отсортировать таблицу по количеству установленных битов по убыванию.
Например, битовая маска 8
в двоичном виде равна 1000
, то есть здесь установлен только один бит, а битовая маска 10
равна 1010
он имеет два установленных бита, поэтому он должен быть выше 8
.
Другой пример: 16
- это 10000
в двоичном формате, поэтому он должен быть ниже, чем 1010
(10 ), который содержит два.
Пример ниже, вот таблица без сортировки
| bitmask | bitmask binary for convenience
-----------
| 3 | 0000011 (2 bits set)
| 64 | 1000000 (1 bit set)
| 49 | 0110001 (3 bits set)
| 15 | 0001111 (4 bits set)
И какую сортировку я пытаюсь достичь:
| bitmask | bitmask binary for convenience
-----------
| 15 | 0001111 (4 bits set)
| 49 | 0110001 (3 bits set)
| 3 | 0000011 (2 bits set)
| 64 | 1000000 (1 bit set)
В другом словами, запись должна быть выше, если в двоичном представлении установлено больше битов.
Я понимаю, что, вероятно, мне следует взять каждое число, получить его двоичное представление и проверить, какие биты установлены.
Затем как-то отсортировать по этому значению .
Но я совершенно не уверен, как этого добиться только с MySQL.
Может ли кто-нибудь дать подсказку или решение