这是要将什么数据的第一个字节的位(bit)全部反转(提示:使用^运算符)?
以下的代码段能将一个int 的第一个字节全部反转:
int x;
scanf("%d",&x);
x=x^0xff000000;
//以下函数能将任意基本整数类型的第一个字节全部反转
template
inline _T reverse(_T a) {
return a ^ ((~(_T(0))) << ((sizeof(_T) - 1) * 8));
}
#include
void main() { unsigned int a; scanf("%u",&a); a^=0x0ff; printf("%x\n",a); }
与0异或得到的值不变,与1异或取反,因此变量中的数与低8位均为1的数异或可以满足题目要求。