极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10653|回复: 3

谁能帮我解释下这个代码 没看明白

[复制链接]
发表于 2013-9-13 22:58:32 | 显示全部楼层 |阅读模式

  if(dataOut&(1<<i))
      {
      pinState=HIGH;
      }
  else
      {
      pinState=LOW;
      }
回复

使用道具 举报

发表于 2013-9-14 01:36:32 | 显示全部楼层
本帖最后由 AndersonBY 于 2013-9-14 01:42 编辑

楼主主要是这句没看懂吧:dataOut&(1<<i)
1<<i表示1向左移i位,比如i如果是3则1<<i=1<<3=100,注意100是二进制

然后&表示按位逻辑与,dataOut&(1<<i)就表示dataOut转为二进制后和1<<i按位进行逻辑与的判断

逻辑与解释:1和1进行逻辑与运算则为1,1和0进行逻辑与运算则为0,0和0进行逻辑与运算则为0。

按位逻辑与解释:两个数按照二进制,每个对应的位都进行逻辑与的判断。
假如两个二进制数a=10100,b=10010,则a和b进行逻辑与则为:
10100
10010
----------
10000


原语句举例:
1.
dataOut = 10100   (二进制)
1<<i = 100 (二进制)
dataOut&(1<<i) = 10100&100 = 100 (二进制)

2.
dataOut = 10010   (二进制)
1<<i = 100 (二进制)
dataOut&(1<<i) = 10100&100 = 0 (二进制)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-14 05:29:12 | 显示全部楼层
AndersonBY 发表于 2013-9-14 01:36
楼主主要是这句没看懂吧:dataOut&(1

谢谢
回复 支持 反对

使用道具 举报

发表于 2013-9-14 09:29:58 | 显示全部楼层
高手写的天书,确实难懂。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 22:07 , Processed in 0.070133 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表