哪位高手来帮小弟我看一下这一小段程序的作用

谁来帮我看一下这一小段程序的作用?
#define   bit_swap(a,b,n,m)               \
        tt   =   ((a   > >   n)   ^   b)   &   m;         \
        b   ^=   tt;   a   ^=   (tt   < <   n)

------解决方案--------------------
你可以试验一下:
设a=00110011;
b=11001100;
n=3;
m=00000010;
则由tt=((a> > n)^b)&m计算出的tt为00000010;
b^=tt得出b=11001110;
a^=(tt < <n)得出a=00100011;
可见这段代码是将b的第m(2)位与a的第m+n(5)位交换了一下。
以上的分析用的例子太少,可能不正确,但这是一个分析问题的方法。