(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操作 0x1
是1
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