1. ホーム
  2. c++

[解決済み] (x ^ 0x1) != 0 とはどういう意味ですか?

2022-04-20 05:31:40

質問

次のようなコード・スニペットに出会いました。

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

とは何ですか? x ^ 0x1 とはどういう意味でしょうか?これは何か標準的なテクニックなのでしょうか?

どのように解決するのですか?

XOR演算( x ^ 0x1 )はビット0を反転させます。つまり、この式は、x のビット 0 が 0 であるか、x の他のビットが 1 であれば、式は真であることを意味します。

逆に、x==1 の場合は偽となります。

ということで、テストは同じです。

if (x != 1)

そのため、不必要に難読化されています。