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

C 語言位運算入門圖解:與、或、異或、取反、移位全攻略

     編輯:關於C

核心概念

程序中所有數據在內存中均以二進制存儲。位運算直接對整數的二進制位進行操作,屬於底層、高效的運算方式。

六大基本運算詳解

1. 位與 &

規則:兩位均為 1 才為 1,否則為 0。

  • 用途:清零(與 0 結合)、取某位(與掩碼結合)、保留某些位。

位與運算示意圖 位與應用示例

2. 位或 |

規則:有 1 即為 1,全 0 才為 0。

  • 用途:置位(與 1 結合)、合併位模式。

位或運算示意圖 位或應用示例

3. 位異或 ^

規則:相同為 0,不同為 1。

  • 用途:翻轉特定位、不用臨時變量交換兩數、簡易加密、校驗和。

位異或運算示意圖 位異或應用示例

4. 取反 ~

規則:0→1,1→0(按位取反)。

  • 注意:對有符號數取反會改變符號位,通常配合無符號類型或掩碼使用。

取反運算示意圖 取反應用示例

5. 左移 << 與右移 >>

  • 左移 n 位:低位補 0,高位捨棄,等價於 乘以 2ⁿ(無溢出時)。
  • 右移 n 位:無符號數高位補 0;有符號數高位補符號位(算術右移),等價於 除以 2ⁿ(向下取整)。
  • 超出位寬的移位行為未定義,需避免。

左移運算示意圖 右移運算示意圖

常見技巧速查表

操作代碼片段說明
判斷奇偶(x & 1) == 1最低位為 1 即奇數
取模 2ⁿx & ((1<保留低 n 位
乘 2ⁿx << n左移 n 位
除 2ⁿx >> n右移 n 位(有符號為算術移位)
交換 a,ba^=b; b^=a; a^=b;無臨時變量交換
清除最低 1x & (x-1)常用於統計 1 的個數
取最低 1x & -x利用二進制補碼特性

避坑指南

  • 移位操作數不能為負數,移位量不能 ≥ 位寬。
  • 有符號數右移為實現定義行為(算術/邏輯移位),跨平台請用無符號類型。
  • 位運算優先級低於比較運算,複雜表達式務必加括號。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved