本人小白,求教一个华为机试的题目,用C++编程。
输入一个0到255的十进制数,把它转化为8位二进制数,再将二进制数反转(最低位与最高位换、次低位与次高位换、依次类推),把反转后的二进制数再转化为十进制数并把该十进制数输出。
2014-04-02 21:42

2014-04-02 22:22

2014-04-02 22:22
程序代码:#include <stdio.h>
unsigned char reverse8( unsigned char c )
{
c = ( c & 0x55 ) << 1 | ( c & 0xAA ) >> 1;
c = ( c & 0x33 ) << 2 | ( c & 0xCC ) >> 2;
c = ( c & 0x0F ) << 4 | ( c & 0xF0 ) >> 4;
return c;
}
int main()
{
int n;
scanf( "%d", &n );
printf( "%d", (int)reverse8((unsigned char)n) );
return 0;
}
2014-04-03 09:37
2014-04-03 11:09
2014-04-03 15:43
2014-04-03 16:46
2014-04-03 23:14
2014-04-05 22:41
2014-04-08 05:10