Operator ^ adalah bitwise-xor (lihat &, |). Hasil untuk pasangan bit adalah,
0 ^ 0 == 0
0 ^ 1 == 1
1 ^ 0 == 1
1 ^ 1 == 0
Jadi ungkapannya,
( x ^ 0x1 )
membalikkan / membalik bit ke 0 x (membiarkan bit lainnya tidak berubah).
Pertimbangkan apakah x dapat memiliki nilai selain 0x0 dan 0x1? Ketika x adalah bidang bit tunggal, ia hanya dapat memiliki nilai 0x0 dan 0x1, tetapi ketika x adalah int (char / short / long / etc), bit selain bit0 dapat memengaruhi hasil ekspresi.
Ekspresi seperti yang diberikan memungkinkan bit di samping bit0 untuk mempengaruhi hasilnya,
if ( 0 != ( x ^ 0x1 ) )
Yang memiliki kebenaran setara dengan ungkapan (sederhana) ini,
if ( x ^ 0x1 )
Perhatikan bahwa ungkapan ini hanya akan memeriksa bit0,
if( 0x1 & ( x ^ 0x1 ) )
Jadi ekspresi yang disajikan benar-benar menggabungkan dua pemeriksaan ekspresi,
if( ( x & ~0x1 ) //look at all bits besides bit0
|| ( x ^ 0x1 ) ) //combine with the xor expression for bit0
Apakah penulis hanya bermaksud memeriksa bit0, dan bermaksud menggunakan ungkapan ini,
if( 0x1 & ( x ^ 0x1 ) )
Atau apakah penulis bermaksud menggandakan nilai untuk bit1-bitN dan xor dari bit0?