Tôi có một số nguyên 64 bit, mà tôi cần xoay 90 độ trong khu vực 8 x 8 (tốt nhất là với thao tác bit thẳng). Tôi không thể tìm ra bất kỳ thuật toán tiện dụng nào cho điều đó. Ví dụ, điều này:Xoay bitmap 90 độ
// 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
sau khi xoay trở này:
// 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
Tôi tự hỏi nếu có bất kỳ giải pháp mà không cần phải sử dụng bất kỳ bảng băm tính trước (s)?
Tôi nghi ngờ rằng có một cách để thực hiện điều này chỉ với thao tác bit (& | ~ << etc) các câu trả lời dưới đây liên quan đến vòng lặp lồng nhau. –
Làm cho chữ "số nguyên" in đậm và nhấn mạnh thực tế rằng nó không phải là một mảng để mọi người sẽ thấy thực tế đó ngay lập tức thay vì viết nó như là một bình luận cho mỗi câu trả lời. – Shaihi
Shaihi: Ý tưởng hay. – nhaa123