ตัวดำเนินการ ^ คือ bitwise-xor (ดู &, |) ผลลัพธ์สำหรับคู่บิตคือ
0 ^ 0 == 0
0 ^ 1 == 1
1 ^ 0 == 1
1 ^ 1 == 0
ดังนั้นการแสดงออก
( x ^ 0x1 )
กลับค่า / พลิกบิตที่ 0 ของ x (ปล่อยให้บิตอื่นไม่เปลี่ยนแปลง)
พิจารณาว่า x สามารถมีค่านอกเหนือจาก 0x0 และ 0x1 หรือไม่ เมื่อ x เป็นฟิลด์บิตเดียวมันสามารถมีค่า 0x0 และ 0x1 เท่านั้น แต่เมื่อ x เป็น int (char / short / long / etc) บิตที่อยู่นอกเหนือจาก bit0 สามารถส่งผลต่อผลลัพธ์ของนิพจน์ได้
การแสดงออกตามที่กำหนดช่วยให้บิตข้าง bit0 ส่งผลกระทบต่อผล
if ( 0 != ( x ^ 0x1 ) )
ซึ่งมีความจริงที่เท่าเทียมกันเท่ากับการแสดงออก (เรียบง่าย)
if ( x ^ 0x1 )
โปรดทราบว่าการแสดงออกนี้จะตรวจสอบเพียงบิต 0
if( 0x1 & ( x ^ 0x1 ) )
ดังนั้นการแสดงออกที่นำเสนอคือการรวมสองการตรวจสอบการแสดงออก
if( ( x & ~0x1 ) //look at all bits besides bit0
|| ( x ^ 0x1 ) ) //combine with the xor expression for bit0
ผู้แต่งตั้งใจจะตรวจสอบเพียงบิต 0 และตั้งใจใช้นิพจน์นี้หรือไม่
if( 0x1 & ( x ^ 0x1 ) )
หรือผู้แต่งตั้งใจจะคอมไพล์ค่าสำหรับ bit1-bitN และ xor ของ bit0 หรือไม่?