【问题标题】:C language unknown & syntax [duplicate]C语言未知和语法[重复]
【发布时间】:2018-03-10 04:20:19
【问题描述】:

我在代码中发现了这个,但是我从来没有遇到过&这样的东西,只有&&

if ((code & 1) == 1){

你能告诉我这是什么吗?

【问题讨论】:

  • 标点符号可能很难搜索,但请查看位运算符。
  • &bitwise AND
  • 考虑购买一本 C 编程书籍...这正是您应该在书籍/文档中查找的内容。

标签: c


【解决方案1】:

这是位运算符。这意味着在比较发生之前使用“代码”完成了一些操作。维基百科说:

按位与采用两个相等长度的二进制表示,并通过将它们相乘来对每对相应位执行逻辑与运算。因此,如果比较位置的两个位都是 1,则生成的二进制表示中的位是 1 (1 × 1 = 1);否则,结果为 0(1 × 0 = 0 和 0 × 0 = 0)。

顺便说一句,有这样的线程但是关于 C++ 而不是 C,here

【讨论】:

    【解决方案2】:

    是位与运算符:

    /* binary: 0100, 0010 and 0111*/
    int x = 4, y = 2, z = 7;
    
    /* then: */
    printf("x & y = %d\n", x&y);
    printf("x & z = %d\n", x&z);
    printf("y & z = %d\n", y&z);
    

    输出:

    x & y = 0 x & z = 4 y & z = 2

    对于 or 操作你也有同样的情况:

    /* then: */
    printf("x | y = %d\n", x&y);
    printf("x | z = %d\n", x&z);
    printf("y | z = %d\n", y&z);
    

    输出:

    x | y = 6
    x | z = 7 
    y | z = 7
    

    因此,在您的情况下,if ((code & 1) == 1) 是一个测试,以了解在 code 中是否提出了不太重要的位

    【讨论】:

      【解决方案3】:

      这是一个按位 and 运算符。 它检查code 的第一位是1,所以它检查code 是奇数。

      【讨论】:

        【解决方案4】:

        & 是二进制 AND 运算符,如果两个操作数中都存在,则将位复制到结果中。

        例如:

        (A & B) = 12,即 0000 1100

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-11
          • 2021-08-03
          • 1970-01-01
          • 2016-02-16
          • 1970-01-01
          • 1970-01-01
          • 2017-01-03
          相关资源
          最近更新 更多