我的掩蔽是否正确

时间:2017-03-29 12:18:12

标签: c++ operators bit-shift masking

是什么意思
if ((readParameter - > type(0) & 0xff) == 0xff) {}

我知道当我们和牛奶一起'然后'然后它返回LSB。但是再次使用== 0xff评估它是什么意思?

我感觉像这样(例如):

 if ((00000000 00000000 00000000 11011001 & 00000000 00000000 00000000 11111111) == 00000000 00000000 00000000 11111111) 
   {
     //IF THEY ARE EQUAL IT ENTERS IN THE LOOP ? IN THIS CASE THEY ARE  NOT EQUAL
   }

请指正 如果我错了?

2 个答案:

答案 0 :(得分:2)

  

但是再次使用== 0xff评估它是什么意思?

if检查最低有效字节是否等于0xff。 readParameter->type(0)返回的其余部分可能包含其他位集。如果它们没有被& 0xff删除,那么与0xff的相等可能永远不会成立。

  

我知道当我们用某些东西然后返回LSB时。

这不是真的,当你使用二进制按位AND时,结果取决于操作中使用的参数。如果您&使用0xff,那么您将获得最低有效字节,但如果您执行(ui32value & 0xff000000) >> 24,那么您将读取最重要的字节。

答案 1 :(得分:0)

将过滤操作的结果(& 0xff)与掩码本身进行比较,以检查参数的最后8位是否都等于1