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

C 語言運算符詳解:按位運算符與移位操作

     編輯:C 語言基礎

按位運算符表

運算符含義示例 (x=7=0111, y=8=1000)
&位與x&y = 0
|位或x|y = 15 (1111)
^位異或x^y = 15
~位取反~x = ...11111000 (補碼 -8)
>>右移x>>1 = 3 (0011)
<<左移x<<1 = 14 (1110)

關鍵區別

  • 邏輯運算 (`&&`, `||`) 結果只能 0/1;按位運算結果可為任意位模式。
  • 例:`x=7, y=8` → `x&&y` 為真(1),`x&y` 為 0。

移位細節

  • 左移 `<<`:低位補 0,相當於乘 2ⁿ(無溢出時)。
  • 右移 `>>`:無符號數高位補 0;有符號數實現相關(算術移位保符號位,邏輯移位補 0)。
  • 移位位數 ≥ 類型寬度屬未定義行為。

應用場景

  1. 標誌位操作:`flags |= MASK` 置位,`flags &= ~MASK` 清位,`flags ^= MASK` 翻轉,`flags & MASK` 測試。
  2. 快速乘除 2 的冪次。
  3. 位域提取:`(val >> shift) & mask`。
  4. 校驗和、加密、壓縮等底層演算法。

總結

按位運算是系統級編程基石,理解位模式與邏輯值的區別、移位補位規則、優先級(`&` > `^` > `|` > `&&` > `||`),能寫出高效、緊湊的底層代碼。

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