本人小白,求教一个华为机试的题目,用C++编程。
输入一个0到255的十进制数,把它转化为8位二进制数,再将二进制数反转(最低位与最高位换、次低位与次高位换、依次类推),把反转后的二进制数再转化为十进制数并把该十进制数输出。
#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; }