一个关于位运算的宏定义求解
我们大一学生在做课程设计,我在网上找的一个程序中的一个宏定义在答辩时被老师提问道,我不会······

#define MCGETLONG(data) ( ( ((unsigned long)MCGETSHORT((data)))<<16 )|( ((unsigned long)MCGETSHORT((char *)(data)+2))&0x0000ffff ) )
老师还举了个例子
a=1b2ec
b=MCGETLONG(a)
问b得多少
大家给解答下,还有原理是什么,能不能提前回家全看大家了,谢谢啦!!!!!!!!!!