給定 x = 0x66、y = 0x39,計算各表達式的字節值(單字節,8 位)。
x = 0x66 = 0110 0110 y = 0x39 = 0011 1001
| 表達式 | 運算類型 | 二進制過程 | 結果 (Hex) |
|---|---|---|---|
x & y | 按位與 | 0110 0110 & 0011 1001 = 0010 0000 | 0x20 |
x | y | 按位或 | 0110 0110 | 0011 1001 = 0111 1111 | 0x7F |
~x | ~y | 按位非後或 | ~x=1001 1001, ~y=1100 0110 → 或運算 = 1101 1111 | 0xDF |
x & !y | 按位與邏輯非 | !y 為邏輯非,y 非 0 故 !y = 0。x & 0 = 0 | 0x00 |
x && y | 邏輯與 | x 非 0 且 y 非 0 → 結果為 1 (真) | 0x01 |
x || y | 邏輯或 | x 非 0 → 短路求值,結果為 1 | 0x01 |
!x || !y | 邏輯非或 | !x=0, !y=0 → 0 || 0 = 0 | 0x00 |
x && ~y | 邏輯與按位非 | ~y = 0xC6 (非 0),x 非 0 → 1 && 1 = 1 | 0x01 |
&, |, ~, ^):逐位計算,結果為整數。&&, ||, !):將操作數視為「真(非 0)」或「假(0)」,結果只能是 0 或 1。!y 是邏輯非(結果 0/1),~y 是按位非(逐位取反)。本題是區分「位運算」與「邏輯運算」的絕佳練習,考試高頻考點。