问个关于位操作的问题?

mingdi   2009-1-8 11:34 楼主
问题比较简单,让大家见笑了 、!
#define GPB5_out (1<<(5*2))
GPBCON =GPB5_out ; //GPB5引脚设为输出!
我想问的问题就是GPB5_out的宏定义成(1<<(5*2)),代表的是什么意思?为什么要这样写!

回复评论 (4)

C语言中的位操作。目的是把1左移n位,1 < <(5*2))这里就是相当于把第10(2*5)位置1,其余位为0.
这样定义比较直观,可读性好,也可以直接把二进制的第10位置1。
点赞  2009-1-8 12:49
LS 正解
点赞  2009-1-8 14:11
引用: 引用 1 楼 zyzhang365 的回复:
C语言中的位操作。目的是把1左移n位,1 < <(5*2))这里就是相当于把第10(2*5)位置1,其余位为0.
这样定义比较直观,可读性好,也可以直接把二进制的第10位置1。

确实是如此
点赞  2009-1-8 20:39
引用: 引用 1 楼 zyzhang365 的回复:
C语言中的位操作。目的是把1左移n位,1 < <(5*2))这里就是相当于把第10(2*5)位置1,其余位为0.
这样定义比较直观,可读性好,也可以直接把二进制的第10位置1。


是这样,嵌入式很多采用这种方法,比较直观,可读性好,不容易设置错误。
点赞  2009-1-8 20:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复