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

C 語言位運算全攻略:六大運算符、實戰技巧與系統級編程應用

     編輯:關於C語言

六大位運算符速查

符號名稱規則典型用途
&按位與同為1得1掩碼清零、保留特定位
|按位或有一個1得1置位、合併標志位
^按位異或不同得1翻轉位、簡易加密、交換變量
~取反0↔1生成掩碼、位取反
<<左移高位丟棄,低位補0快速乘 2ⁿ、組合高低位
>>右移低位丟棄,符號位擴展快速除 2ⁿ、提取高位

經典實戰模式

1. 掩碼操作

a & 0xFF        // 保留低8位,高位清零
a | 0xF0        // 設置高4位為1
a ^ 0xFF        // 翻轉低8位
~a              // 全位取反

2. 移位組合

// 將兩個 char 合併為 int (小端序)
char a='a', b='b';
int p = (a << 8) | b;   // p = 0x6261
// 提取
char low  = p & 0xFF;       // 'a'
char high = (p >> 8) & 0xFF; // 'b'

3. 乘除法優化

x << 3   // x * 8
x >> 2   // x / 4 (有符號算術右移保持符號)

系統編程應用場景

  • 硬件寄存器讀寫(設置/清除/檢測特定位)
  • 網絡協議頭部解析(位域提取)
  • 壓縮存儲(布爾標志打包進位域)
  • 校驗和計算(異或累加)
  • 加密/混淆算法核心操作

有符號右移陷阱

負數右移時符號位擴展:Turbo C 等多數編譯器採用算術右移(補 1),但 C 標準規定為實現定義行為。跨平台代碼應顯式轉為 unsigned 再右移,或使用除法。

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