69,382
社区成员
发帖
与我相关
我的任务
分享
unsigned char reverse_bit(unsigned char b)
{
b = (b << 4) + (b >> 4); // &11110000, 56781234
b = ((b & 0x33) << 2) + ((b & 0xCC) >> 2); // &11001100, 78563412
b = ((b & 0x55) << 1) + ((b & 0xAA) >> 1); // &10101010, 87654321
return b;
}
unsigned char getval(unsigned char uc)
{
if(uc==0)return uc;
unsigned char rtn = 0;
for(int i=0;i<8;i++)
{
rtn=((rtn+((uc>>i)&1))<<(i<7?1:0));
}
return rtn;
}
//十进制位:O(1)
unsigned char reserve_dec( unsigned char value )
{
return (value / 100) + ( value / 10 % 10 * 10 ) + (value % 10 * 100);
}
//十六进制:O(1)
unsigned char reserve_hex( unsigned char value)
{
return (value << 4) & (value >> 4);
}
//二进制:O(1)
unsigned char reserve_bin( unsigend char value )
{
static unsigned char rchars[] = "\0\x08\x04\x0c\x02\x0a\x06\x0e\x01\x09\x05\x0d\x03\x0b\x07\x0f";
return rchars[value >> 4] | ( rchars[value & 0x0F] << 4 );
}