【问题标题】:if (index & 0x88) == 0, how this works? [duplicate]if (index & 0x88) == 0,这是如何工作的? [复制]
【发布时间】:2013-04-17 12:54:37
【问题描述】:

谁能告诉我这个操作是如何工作的?索引是数字,它可以是 0 到 128 之间的任何数字。我只是不明白 (index & 0x88) 怎么可能是 0。

任何帮助将不胜感激!

【问题讨论】:

  • 0x88,以二进制形式写入时,为 0b10001000。因此,当索引的第 8 位和第 4 位都为 0 时,index & 0x88 正好为零。通常在测试基于位的标志时使用这种类型的条件(在这种情况下,第 8 位和第 4 位指示的标志组合)第 4 个标志未设置。)

标签: c#


【解决方案1】:

&bitwise and 运算符(应用于数字时)。

例如,110 & 101 = 100

0x88 是二进制的10001000

【讨论】:

    【解决方案2】:

    0x88 等价于二进制的10001000。因此,如果索引的二进制值为0xxx0xxx,则它将是0,其中x 是任何二进制数字。

    【讨论】:

      【解决方案3】:

      & 运算符是位与,如果 0x88 的二进制位和 index 中的对应点都为 1,则不会 == 0。 在相反的情况下,如果没有一个数字都是 1,那么 & 的结果将为 0

      在这种情况下,您的十六进制数 88 在二进制中是 10001000,所以 (index & 10001000) 可以等于 0,只要 index 在它的第 4 和第 8 位置有 0(例如,01110111)

      【讨论】:

        猜你喜欢
        • 2012-07-12
        • 2021-07-12
        • 2019-06-27
        • 2018-04-22
        • 2018-01-27
        • 2017-02-12
        • 2014-12-04
        • 2019-11-19
        • 2014-02-10
        相关资源
        最近更新 更多