繁体   English   中英

(id & 12) 评估什么?

[英]What does (id & 12) evaluate to?

我明白这是一个简单的问题。 谁能解释下面的“如果”是做什么的。 假设id = 0;

private bool item;

if (item = ((id & 12) == 12))
    ret = 1;
  1. (id & 12)是否评估为(0+12) 如果是,则12 == 12变为真。
  2. 这是否检查item是否等于 true?

&是按位运算符。 它只保留那些在两个操作数中都为 1 的位。

  • 0 & 0 == 0
  • 0 & 1 == 0
  • 1 & 0 == 0
  • 1 & 1 == 1

二进制中的 12 是1100 ,二进制中的 0 是0000 ,所以0 & 12 == 0

哪个输入给你 12? 好吧,任何设置了位 2 和 3 的输入,例如1111 (15, 0xF)、 1101 (13, 0xD)、 1110 (14, 0xE),当然还有1100 (12, 0xC) 本身。 但许多其他输入也是可能的,例如11100 (28, 0x1C) 或11101 (29, 0x1D)。

用十六进制表示法编写更紧凑,并且更容易查看输入是否匹配。 十六进制的 12 是0xC 任何其他具有CDEF最低有效位 position 的十六进制数都将满足您的条件。

请注意,诸如0101 (5) 之类的输入将无法通过测试,因为0101 & 1100 == 0100 (5 & 12 == 4)。

item被分配了按位和的结果,然后这个结果被用作你的if语句的条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM