c++ - 我的掩蔽是否正确

标签 c++ operators bit-shift masking

这是什么意思

if ((readParameter - > type(0) & 0xff) == 0xff) {}

我知道当我们用 oxff 做 '&' 时它会返回 LSB。但是用 again == 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
   }

请指正 如果我错了?

最佳答案

But what does it mean by evaluating it with again == 0xff ?

这个 if 检查最低有效字节是否等于 0xff。 readParameter->type(0) 返回的其余部分可能包含其他位集。如果不使用 & 0xff 删除它们,则等于 0xff 可能永远不会为真。

I know when we dO '&'with something then it returns the LSB.

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

关于c++ - 我的掩蔽是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093310/

相关文章:

c++ - 为什么 gcc 和 clang 都不发出任何警告?

c++ - 无法将 char (*)[1000] 转换为 char **

c++ - 如何在字符串中添加整数?

java - 代表 C 左移有符号字符与 Java 中的无符号字符

c++ - 按位移位使用什么整数类型作为移位大小?

javascript - 如何左移大于 32 位的数字?

c++ - 可以在 Windows 上创建受密码保护的 zip 文件的 C zip 库?

c++ - 初始化顺序和移动语义

function - 三路异或类函数

java - Java算子的疑惑