(x ^ 0x1)!= 0是什么意思?

我遇到以下代码片段

if( 0 != ( x ^ 0x1 ) )
     encode( x, m );

x ^ 0x1是什么意思? 这是一些标准技术吗?


异或操作( x ^ 0x1 )反转位0.因此,表达式有效地表示:如果x的位0为0,或者x的任何其他位为1,则表达式为真。

相反,如果x == 1,则表达式为false。

所以测试与以下相同:

if (x != 1)

因此(可以说)不必要地混淆。


  • ^是按位XOR操作
  • 十六进制表示法中的0x11
  • x ^ 0x1将反转的最后一位x (指XOR真值表在上面的链接,如果这不是你清楚)。
  • 因此,如果x大于1或者x的最后一位是0,则条件(0 != ( x ^ 0x1 ))将为真。仅将x == 1作为条件将为false的值。 所以它相当于

    if (x != 1)
    

    PS地狱的一种方式来实现这样一个简单的条件,我可以补充说。 不要这样做。 如果您必须编写复杂的代码, 请发表评论 。 我请求您。


    这看起来可能是过于简单的解释,但如果有人想慢慢浏览下面的内容:

    ^是c,c ++和c#中的按位XOR运算符。

    按位异或采用两个相等长度的位模式,并对每对相应位执行逻辑异或运算。

    “异或”是一种逻辑运算,只要两个输入不同(一个为真,另一个为假),就会输出true。

    xor b的真值表:

    a           b        a xor b
    ----------------------------
    1           1           0
    1           0           1
    0           1           1
    0           0           0
    

    所以我们来举例说明二进制级别的0 == ( x ^ 0x1 )表达式:

                 what? xxxxxxxx (8 bits)
                   xor 00000001 (hex 0x1 or 0x01, decimal 1)    
                 gives 00000000
    ---------------------------
    the only answer is 00000001
    

    所以:

       0 == ( x ^ 0x1 )    =>    x == 1
       0 != ( x ^ 0x1 )    =>    x != 1
    
    链接地址: http://www.djcxy.com/p/72485.html

    上一篇: What does (x ^ 0x1) != 0 mean?

    下一篇: What is the meaning of this declaration?