Cách hiệu quả nhất để loại bỏ các bit xen kẽ từ một int 32 bit là gì? Đối với trường hợp cụ thể này, tôi chỉ quan tâm đến các bit lẻ, mặc dù tôi chắc chắn nó đơn giản để khái quát hóa bất kỳ giải pháp nào cho cả hai bộ. Ví dụ, tôi muốn chuyển đổi 0b01000101
thành 0b1011
. Cách nhanh nhất là gì?Làm thế nào để tách rời các bit (UnMortonizing?)
EDIT:
Trong ứng dụng này, tôi có thể đảm bảo rằng các bit đều là 0. Tôi có thể tận dụng lợi thế của thực tế đó để cải thiện tốc độ hoặc giảm không gian?
đẹp. Đây chính xác là điều tôi đã nghĩ đến. – AShelly
kiểm tra này nhanh hơn một bảng nhập 32 trên máy tính của tôi. – AShelly
... và nếu bạn không biết rằng các bit lẻ là số không, hãy thực hiện 'x & = 0x55555555' trước – Bergi