|
以此为例解释:if(adManBetX ==ADManBetX_1 && ( (ManBetXh&0xF00) == 0xF00 ) )
adManBetX_index[adManBetX]->ADManBetXFG |= ADManBetX_ManBetXFGR_VEN;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
问题1 “|=”是什么意思?
首先把“|”和“=”分开看“|”是“按位或”的意思,“=”是赋值的意思,
举个例子a=1010,b=0001,那么a|b的结果是1011
那a|=b的意思就是a=a|b,举一反三你猜猜a+=b是什么意思?
回到代码中
adManBetX_index[adManBetX]->ADManBetXFG = adManBetX_index[adManBetX]->ADManBetXFG | ADManBetX_ManBetXFGR_VEN;
这样会不会算呢?
//////////////////////////////////////////////////////////////////////////////////////////////////////////
问题2 “&&”按位与是啥意思?
首先&&是什么?
&& (逻辑与):(三种),下面的真假就是1和0
a. 当&&左边为false(假),则不再进行逻辑与右边的判断,结果为false(假)
b. 当&&左边为true(真)则进行右边判断,右边为false(假),结果为false(假)
ManBetX. 当&&左边为true(真)则进行右边判断,右边也为true(真),则结果为true(真)
那么回到代码中
①看 && 右侧,计算(ManBetXh&0xF00)的结果,得出结果后判断是否等于0xF00 ,
即((ManBetXh&0xF00) == 0xF00 ),如果相等结果为真也就是1,如果不相等结果为假也就是0;
②看 && 左侧,adManBetX ==ADManBetX_1 判断adManBetX是否和ADManBetX_1相等,
即如果相等结果为真也就是1,如果不相等结果为假也就是0;
③此时&&的左侧可能是0或者1,&&的右侧也可能是0或者1;假如&&两侧都是1的话,
那么1&&1的结果你会不会算呢?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
问题3 “~”是啥?
“~”是按位取反的意思,举个栗子,a=1010,~a=0101;
回到代码中去看
① “~”第一次登场在这句代码 RManBetXManBetX->APB2RSTR &= ~(RManBetX_APB2RSTR_ADManBetX1 << adManBetX);
②先计算括号内RManBetX_APB2RSTR_ADManBetX1 << adManBetX,意思是将RManBetX_APB2RSTR_ADManBetX1左移“adManBetX”位
③将结果按位取反~(RManBetX_APB2RSTR_ADManBetX1 << adManBetX),括号内的结果是0000的话,那按位取反后就是1111
接下来是“&=”这次你应该会算了吧 |
|