题目要求如题所示:
将一个字符按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 版权协议,转载请附上原文出处链接和本声明。