У меня есть 64-разрядное целое без знака с точно 1 бит. Я хотел бы присвоить значение каждому из возможных 64 значений (в этом случае нечетные простые числа, поэтому 0x1 соответствует 3, 0x2 соответствует 5,..., 0x8000000000000000 соответствует 313).
Кажется, что наилучшим способом было бы преобразовать 1 → 0, 2 → 1, 4 → 2, 8 → 3,..., 2 ^ 63 → 63 и посмотреть значения в массив. Но даже если это так, я не уверен, что самый быстрый способ получить двоичный показатель. И все еще может быть быстрее/лучше.
Эта операция будет использоваться 10 14 до 10 16 раз, поэтому производительность является серьезной проблемой.