( M0P_RTC->CR0 & 0x7faf ) !=0x4188 与( M0P_RTC->CR0 & 0x4188 ) !=0x4188的区别
<p>if ( ( M0P_RTC->CR0 & <span style="color:#2ecc71;">0x7faf </span>) !=0x4188 ) 中为什么不写成 </p><p>if ( ( M0P_RTC->CR0 & <span style="color:#e74c3c;">0x4188</span> ) !=0x4188 )</p>
<p> </p>
<p> </p>
<p><span style="color:#2ecc71;">0x7faf </span>==》0111 1111 1010 1111</p>
<p> | | | | | | | | | | | | | 要判断的位</p>
<p>0x4188=》 0100 0001 1000 1000</p>
<p> | | | | 要判断的位</p>
<p>要判断的位不同 也就是M0P_RTC->CR0 有这些位需要判断</p>
<p> </p>
<p>上面要判断的位多些,所有位和上面的结果有关系</p>
<p>后面的少些。 多出来的不要判断的位与结果没关系。</p>
<p> </p>
damiaa 发表于 2024-11-15 11:43
0x7faf ==》0111 1111 1010 1111
...
<p>谢谢。请问:他是不是不只要判断数值为1的是否为1,还想判断数值为0的是否当前数值为0呢,要不 4188中的0位,他&1 是什么意图呢?</p>
<p>&0x01 只判断最低1位 &0x2判断次低位 &0x03判断低2位。。。</p>
<p> </p>
<p>与门可以这样解释,对于关心的指标,你必须达到才能通过,对于不关心的指标,不管你水平如何,都不允许通过。</p>
<p>0x7faf 可能是某些宏段组合成的,只是显示的时候被直接替换了,表示这个寄存器的某些段位,用宏来做比较具备扩展性。等号右边的 0x4188 也可能是某些位的宏组合。</p>
<p>某个意义上两个表达式没什么实质区别。</p>
页:
[1]