ThanhNT Blog's

Computer, Networking, Embedded Systems, PCB Design

[Dev] Hàm đếm bit nhanh - Fast bit counter

Fast bit counter Mở đầu Bạn đang chăm chú ngắm nghía 1 đoạn code, bỗng nhiên bạn gặp một hàm trông có vẻ rất nguy hiểm như sau: int fbc(unsigned int data) { data = (data & 0x55555555) + ((data >> 1) & 0x55555555); data = (data & 0x33333333) + ((data >> 2) & 0x33333333); data = (data & 0x0F0F0F0F) + ((data >> 4) & 0x0F0F0F0F); data = (data & 0x00FF00FF) + ((data >> 8) & 0x00FF00FF); data = (data & 0x0000FFFF) + ((data >> 16) & 0x0000FFFF); return data; } Một đoạn hàm rất bí ẩn với một loạt các phép toán logic >>, &, +.