在C语言中怎么实现两个8位数的高四位交换,或者第四位交换?
比如a=10110000,b=00001010,想叫他们交换完后成为10111011,怎么实现?
开始问题写错了,b的数值不是8位了,我修改了!
(A & 0xff <<4) | (B | 0xff >>4 )
正解
设置中间变量,进行数据的暂存,以保护其中一个数据。
大致思路应该是这样的,由于论坛最近非法字太多,就用图片来表示吧:
应该差不多是这么个意思。
看楼主是否需要数据暂存,如果不需要的话可以用移位操作,这样就省得再开辟内存了(我比较抠。。。。)方法如下:
u8 a,b;
a=a>>4;
b=b<<4;
a=a|b; //由于移位操作时用0补充,所以不用再&0x0f或者&0xf0
一般是这样的,清除掉a的低4位和b的高4位(清0),然后a与b进行位或运算
清除的方法,位与0xf0清零低四位,位与0x0f清零高四位