或许编程的朋友都曾经遇到过比特位的翻转,这儿有一段小程序或许能参考一下:)
其实思想很简单,先对各个比特位进行两两交换,然后二二交换,然后四四交换,然后八八交换,最后前后对换。
unsigned int reverse(register unsigned int x) { register unsigned int y = 0x55555555; x = (((x >> 1) & y) | ((x & y) << 1)); y = 0x33333333; x = (((x >> 2) & y) | ((x & y) << 2)); y = 0x0f0f0f0f; x = (((x >> 4) & y) | ((x & y) << 4)); y = 0x00ff00ff; x = (((x >> 8) & y) | ((x & y) << 8)); return((x >> 16) | (x << 16)); }
|