//调试过程中易出现将按位与“|”写错成“||”
#include <stdio.h>
void main(void)
{
unsigned char uData = 0xaa;//1001 1011
unsigned char uMask = 0;
unsigned char temp=1;
unsigned char targetData=0;
unsigned i;
for(i=1;i<=8;i++)
{
uMask = uData ^ ((uData >> i) <<i); //右移再左移后末i位一定为0
// printf("%d\n",uMask);
if(temp==uMask)
{
uData=uData-temp;
//printf("%x\n", uData);
targetData=targetData|(1<<(8-i));
//printf("targetData=%x\n", targetData);
}
temp=temp*2;
// printf("temp=%d\n",temp);
}
uData=targetData;
printf("targetData=%x\n", uData);//%x表示为uData为十六进制表示。
}
//采用移位处理和异或处理,较高效