题目要求如题所示:
将一个字符按bit位逆序,例如一个字节是0x11,将其逆序后就变成0x88。
下面是四种解法,其中最后一种效率最高,是从《Hacker’s Delight》这本书中学来的。

#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
将一个字符按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 版权协议,转载请附上原文出处链接和本声明。