红联Linux门户
Linux帮助

位运算

发布时间:2012-04-21 21:26:12来源:红联作者:墨lgq
[i=s] 本帖最后由 墨lgq 于 2012-4-23 21:27 编辑 [/i]

#define MAKEWORD(x, y) (int)((((int)(x)) & 0xffff) | ((((int)(y)) & 0xffff) << 16))

这个宏定义是做什么的?能举个例子?
文章评论

共有 4 条评论

  1. comsiongod 于 2012-04-25 10:24:03发表:

    新手上手 学习学习

  2. 墨lgq 于 2012-04-23 21:27:09发表:

    ok,明白了。大神谢了哈。。。。

  3. personball 于 2012-04-23 13:37:42发表:

    沙发解答正确。

  4. sauntor 于 2012-04-22 20:49:04发表:

    这个宏是从两个int变量中各取16位然后拼成一个32位到int。拼接到方法是取出y到低16位二进制位作为新int到高端位,去出x到低16位作为新int到低端位,这个总共32位构成一个int。例如:
    x = 11010111 00011001 00100011 00010110
    y = 10000000 11010000 11000100 00001111

    拼接的结果是11000100 00001111 00100011 00010110


    上面的解释希望对你有所帮助,具体运算细节的解释请参考C中有关位运算的书籍吧。