|
|
发表于 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 (二进制) |
|