问题
对一个字节数据,逐个交换其高低位,例如11010001
,经过0-7,1-6,2-5,3-4对应位的交换,变成
10001011
。
解决思路
对于该问题,我们最先想到的是对原字节通过移位操作来逐位处理,使用另一个变量来存储交换后的结果。这种解决方案处理起来思路清晰,编写代码应该不难。 下面是该思路对应的代码: 1unsigned char shift_fun1(unsigned char data) 2{ 3 unsigned char i; 4 unsigned char tmp=0x00; 5 6 for(i=0;i<8;i++) 7 { 8 tmp=((data>>i)&0x01)|tmp; 9 if(i<7) 10 tmp=tmp<<1; 11 } 1213 printf(" after shift fun1 data=%x \n",tmp); 1415 re