在编写这道题的程序时,费了老大劲才写出了这样的程序:(小白求轻拍) unsigned char reverse_bit_char(unsigned char y)
{
int i = 0;
unsigned char blank = 0x01;
unsigned char num = 0;
for (i = 7; i >0; i -= 2)
{
num = (y >> i)&(blank) | num;
blank <<= 1;
}
blank = 0x80;
for (i = 7; i >0; i -= 2)
{
num = (y << i)&(blank) | num;
blank >>= 1;
}
return num;
}
unsigned int reverse_bit(unsigned int x)
{
unsigned short a = x / 0x10000;
unsigned short b = x;
unsigned char c = b / 0x100;
unsigned char d = b;
c = reverse_bit_char(c);
d = reverse_bit_char(d);
c = c^d;
d = c^d;
c = c^d;
b = c * 0x100 + d;
a = a^b;
b = a^b;
a = a^b;
x = a * 0x10000 + b;
return x;
} 总共定义了两个函数,使用的方法是把int型数的32bit二进制先
unsigned int reverse_bit(unsigned int value) { value = (value & 0x55555555) << 1 | (value & 0xAAAAAAAA) >> 1; value = (value & 0x33333333) << 2 | (value & 0xCCCCCCCC) >> 2; value = (value & 0x0F0F0F0F) << 4 | (value & 0x0F0F0F0F) >> 4; value = (value & 0x00FF00FF) << 8 | (value & 0XFF00FF00) >> 8; value = (value & 0x0000FFFF) << 16 | (value & 0xFFFF0000) >> 16; return value; }12345678910111234567891011 看起来就简短干净了很多,让我深深的感觉到了萌新跟大佬的差距。
|
|
来自: 新用户79878317 > 《C 》