对一个字符按bit位逆序(又称反转)

  • Post author:
  • Post category:其他


题目要求如题所示:

将一个字符按bit位逆序,例如一个字节是0x11,将其逆序后就变成0x88。

下面是四种解法,其中最后一种效率最高,是从《Hacker’s Delight》这本书中学来的。

第一种:

看似创新,其实最笨的做法。

使用bit类型,代码不够简洁,执行效率较低,并且扩展不易(例如对int型进行逆序时)。



#define


exchange(x,y) { (x) ^= (y);  /




(y)


^=


(x);  /


(x)


^=


(y);  /


}




unsigned


char


fun1(unsigned


char


c)







{





int


i;



union




{



unsigned


char


c;





struct






{



unsigned


char


bit0:


1


;


unsigned


char


bit1:


1


;


unsigned





版权声明:本文为jakee304原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。