七八年前的记录,颇有趣。姑存之。 
 
uchar upset(uchar dat) //用12345678代表dat的各个位
{
dat=(dat>>4)|(dat<<4); //dat变成56781234
dat=((dat&0xcc)>>2)|((dat&0x33)<<2);//dat=78563412
dat=((dat&0xaa)>>1)|((dat&0x55)<<1);//dat=87654321
return dat;
}

ps:方法很多,感觉这个很好,转载过来