У меня есть одно 64-разрядное целое число, которое мне нужно поворачивать на 90 градусов в области 8 x 8 (желательно с прямой манипуляцией с битами). Я не могу найти для этого какой-либо удобный алгоритм. Например, это:
// 0xD000000000000000 = 1101000000000000000000000000000000000000000000000000000000000000
1 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
после поворота становится следующим:
// 0x101000100000000 = 0000000100000001000000000000000100000000000000000000000000000000
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Интересно, есть ли какие-либо решения без необходимости использования какой-либо предварительно вычисленной хэш-таблицы?