首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

CSAPP 2.14 習題解析:位運算與邏輯運算表達式求值

     編輯:關於C語言

CSAPP 2.14 習題解析

給定 x = 0x66、y = 0x39,計算各表達式的字節值(單字節,8 位)。

二進制表示

x = 0x66 = 0110 0110
y = 0x39 = 0011 1001

逐項計算

表達式運算類型二進制過程結果 (Hex)
x & y按位與0110 0110 & 0011 1001 = 0010 00000x20
x | y按位或0110 0110 | 0011 1001 = 0111 11110x7F
~x | ~y按位非後或~x=1001 1001, ~y=1100 0110 → 或運算 = 1101 11110xDF
x & !y按位與邏輯非!y 為邏輯非,y 非 0 故 !y = 0。x & 0 = 00x00
x && y邏輯與x 非 0 且 y 非 0 → 結果為 1 (真)0x01
x || y邏輯或x 非 0 → 短路求值,結果為 10x01
!x || !y邏輯非或!x=0, !y=0 → 0 || 0 = 00x00
x && ~y邏輯與按位非~y = 0xC6 (非 0),x 非 0 → 1 && 1 = 10x01

核心區別總結

  • 按位運算(&, |, ~, ^):逐位計算,結果為整數。
  • 邏輯運算(&&, ||, !):將操作數視為「真(非 0)」或「假(0)」,結果只能是 0 或 1。
  • !y 是邏輯非(結果 0/1),~y 是按位非(逐位取反)。

本題是區分「位運算」與「邏輯運算」的絕佳練習,考試高頻考點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved